我有Car
模型,该模型与许多其他模型相关联。如何检查所有关联模型的updated_at并获取最新模型,例如:
车门在“这次”更新了
我的模型中有很多关联,因此获取每个关联并进行比较效率不高。如果有更好的方法,请告诉我。谢谢。
答案 0 :(得分:2)
您可以在此处使用touch方法。基本上,触摸用于更新记录的updated_at
字段。例如,Car.last.touch
会将最后一个updated_at
记录的Car
字段设置为当前时间。
但是,touch
也可以与关系一起使用,以触发关联对象上的touch
方法。因此,在您的情况下,可能会这样:
class Car < ActiveRecord::Base
belongs_to :corporation, touch: true
end
class Door < ActiveRecord::Base
belongs_to :car, touch: true
end
# Door updation triggers updated_at of parent as well
@door = Door.last
@door.updated_at = DateTime.now
@door.save! # Updates updated_at of corresponding car record as well
在上面的示例中,@door.touch
也可能已用于更新相应父项updated_at
记录的Car
。