我有一个Record
模型,为了编辑这个模型,您必须以Admin
. 我想要一个名为的列last_modified_by
,它指向上次修改记录的管理员。records
在数据库中,我认为在表中添加一个包含 Admin 的列会很好id
;但是,我知道如何做到这一点的唯一方法是与关联。这两个模型彼此没有关联,因此关联没有多大意义。有没有其他方法可以在不求助于关联的情况下完成这项任务?任何建议将不胜感激!
问问题
103 次
2 回答
2
嗯,我认为协会在这里是一个很好的工具。您可能想尝试以某种方式破解它,但我认为您想出的任何东西都不会像通过 foreign_key 建立的关联一样好(也如此之快)。但也许您想命名您的关联并执行以下操作:
class Record < ActiveRecord::Base
belongs_to :culprit, :class_name => 'Admin', :foreign_key => 'last_modified_by'
end
或者给它一些更有意义的命名?
于 2012-05-26T07:02:45.130 回答
1
您可以创建一个 Active Record before_save 回调。回调会将管理员的 id 保存到 last_modified_column 中。这将确保每次模型发生更改时都保存/更新管理员 ID。
例如,假设管理员是@admin:
class Record < ActiveRecord::Base
before_save :save_last_modified
def save_last_modified
self.last_modified_column = @admin.id
end
至于获取@admin,您可以使用类似于 this 的方法,并在 Record 模型的某处设置 @admin = Admin.current (如链接中的 User.current )。
于 2012-05-26T07:43:53.747 回答