0

我有一个Record模型,为了编辑这个模型,您必须以Admin. 我想要一个名为的列last_modified_by,它指向上次修改记录的管理员。records在数据库中,我认为在表中添加一个包含 Admin 的列会很好id;但是,我知道如何做到这一点的唯一方法是与关联。这两个模型彼此没有关联,因此关联没有多大意义。有没有其他方法可以在不求助于关联的情况下完成这项任务?任何建议将不胜感激!

4

2 回答 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 回答