假设我有:
class Foo < ActiveRecord::Base
has_many :bar
end
class Bar < ActiveRecord::Base
belongs_to :foo
end
还假设Bar
该类具有时间戳字段(更新记录时自动更新的字段)。
问题:updated_at
Rails、ActiveRecord 或某处的 gem 中是否有现有的功能/方法调用允许我调用一个方法,该方法将告诉我任何记录中的列中的最新值, 在Foo
类上定义的任何关联中?
因此,理论上的foo.latest_change_to_associated_objects
方法应该给我一个时间戳,说明最新updated_at
字段何时用于我的任何关联记录(在这种情况下,用于任何Bar
记录)。
最简单的情况,你有一个父类并且只有一个关联很简单——一两个回调就可以了。我很好奇一个类定义了许多关联的情况。是否有一个 gem(或我缺少的 ActiveRecord 中已有的功能)允许我声明任何/所有关联以具有此功能?
显然我可以做一个 SQL 调用来解决这个问题,但我不想每次检查最新更改时都这样做。似乎应该有一个回调链,latest_change_on_association
当任何关联的记录发生更改时,它会自动更新父级上的字段(或任何你想调用的字段),这样检索最新的更改时间戳就是检查单个字段上的问题父记录。
注意:我查看了http://api.rubyonrails.org/classes/ActiveModel/Observer.html,但问题是我必须为每个类编写一个观察者。如果从关联列表创建观察者的自动化已经包含在 gem 或其他东西中,那就太好了。