我尝试更改祖先模型的所有兄弟姐妹的父(来自活动模型的代码):
def change_parents_of_siblings
to_change = self.siblings.where.not(id: self.id)
to_change.each do |sib|
sib.update!(parent: self)
end
end
如果我将函数内的所有id(如sib.id,...)打印到控制台,它似乎可以正常工作。但是在函数调用之后,这些更改都没有持久化。例如:
@activity1 = Activity.create(name:"test1")
@activity2 = Activity.create(name:"test2", parent_id: @activity1.id )
@activity15 = Activity.create(name:"test1.5", parent_id: @activity1.id)
@activity15.change_parents_of_siblings
expect(@activity2.parent_id).to eq(@activity15.id)
失败。
答案 0 :(得分:1)
洗完澡后我自己发现了问题。
change_parents_of_siblings方法更改了数据库中的祖先。但是,Rails认为这不是模型的变化。
所以我必须在再次使用之前致电@activity2.reload
。
抱歉花时间。