у меня есть в системе, которая может быть soft_deleted с помощью paranoia (2.0.2)
и TimeRecords
Users
которые отслеживать, сколько :hours
user
работал на данный назначение и то, что их общее :cost
предназначалось для всего задания (:cost = :rate * :hours
, чтобы оно было простым).нужно вернуть: имя объекта, даже если она была мягкой удалена (с помощью паранойя)
Эти записи сохраняются, поэтому даже если в будущем будет изменен тариф user
, у вас все равно будет точный снимок того, что они взимали за данную задачу в прошлом. Введите мягкие удаления. A user
могут быть удалены из системы с помощью мягкого удаления (установка deleted_at: Time.now
), но мне нужно, чтобы их имя все еще отображалось, связанное с :hours
и :cost
, которые они заряжали в прошлом. У меня есть решение, которое работает, но для меня слишком хреново, и я не смог найти более элегантное решение. Я был бы признателен за любые предложения/помощь, которые, возможно, придется сделать в правильном направлении вместо простого способа.
Текущее решение:
class TimeRecord < ActiveRecord::Base
belongs_to :user
delegate :name, to: :user, prefix: true, allow_nil: true
def name
user_name || "#{User.with_deleted.find(user_id).name}" rescue 'n/a'
end
end
Благодаря Арьян, я обсуждала делал это раньше, но в конечном итоге будет более легкий маршрут. Теперь я знаю лучше! – DerProgrammer