我有Record
模型,为了编辑此模型,您必须以Admin
的实例登录。我希望有一个名为last_modified_by
的列,指向最后修改记录的管理员。在数据库中,我认为在records
表中添加一个包含Admin id
的列会很好;但是,我知道如何做到这一点的唯一方法就是建立关联。这两个模型没有相互关联,因此关联没有多大意义。有没有其他办法可以在不诉诸协会的情况下完成这项任务?任何建议将不胜感激!
答案 0 :(得分:2)
class Record < ActiveRecord::Base
belongs_to :culprit, :class_name => 'Admin', :foreign_key => 'last_modified_by'
end
或者给它一些更有意义的命名?
答案 1 :(得分:1)
您可以创建一个活动记录before_save回调。回调会将管理员的id保存到last_modified_column中。这将确保每次模型发生更改时都会保存/更新管理员ID。
例如,假设admin是@admin:
class Record < ActiveRecord::Base
before_save :save_last_modified
def save_last_modified
self.last_modified_column = @admin.id
end
至于获取@admin,您可以使用method similar to this,并在Record模型的某处设置@admin = Admin.current(如链接中的User.current)。