所以我有这个课程:
class Element < ActiveRecord::Base
after_save :update_related_elements_pages
belongs_to :page, counter_cache: true
belongs_to :element, counter_cache: true
has_many :elements
def update_related_elements_pages
self.elements.each do |rel_elem|
rel_elem.page_id = self.page_id
rel_elem.save
end
end
end
现在,当我更新元素的Page
关联时,我希望属于当前元素的所有元素也具有更新的关系。如您所见,我尝试使用回调来实现此目的。
调用回调但不幸的是,self.elements
为空。我错过了什么?有一个更好的方法吗?我也可以在控制器中执行此操作,如果它更合适的话。
答案 0 :(得分:1)
尝试创建连接模型并使用has_many :through
来处理自引用关系。
这是一个优秀的Railscast解释它比我在这里更好:http://railscasts.com/episodes/163-self-referential-association
另一种资源:http://blog.flatironschool.com/post/66285912527/self-referential-associations-aka-self-joins