我Users
在系统中可以使用 soft_deleted 来paranoia (2.0.2)
跟踪TimeRecords
有多少人:hours
在user
给定的任务中工作,以及他们:cost
在整个任务中的总数是多少(:cost = :rate * :hours
为了简单起见)。
这些记录会持续存在,因此即使user
将来更改 a 的费率,您仍然可以准确了解他们过去为给定任务收取的费用。输入软删除。Auser
可以使用软删除(设置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