Rails:未保留对祖先父级的更新

时间:2017-04-02 18:18:37

标签: ruby-on-rails ancestry

我尝试更改祖先模型的所有兄弟姐妹的父(来自活动模型的代码):

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)

失败。

1 个答案:

答案 0 :(得分:1)

洗完澡后我自己发现了问题。

change_parents_of_siblings方法更改了数据库中的祖先。但是,Rails认为这不是模型的变化。

所以我必须在再次使用之前致电@activity2.reload

抱歉花时间。