自动保存'belongs_to`关联无法保存关联模型

时间:2013-12-17 16:55:11

标签: ruby-on-rails ruby-on-rails-3 activerecord associations belongs-to

我有一个Parent模型,根据其子项的所有标记的聚合维护一组Tags

model Parent
   before_save :agregate_tags

   has_many :children
   has_many :tags

   def agregate_tags
     self.tags = self.children.flat_map(&:tags).uniq
   end

end

儿童模特:

class Child
   belongs_to :parent, autosave: true
   has_many :tags
end

当我保存Child时,父节点未保存。为什么会这样?

当我在此处保存child时没有错误,并且没有与Parent相关的数据库活动。似乎没有尝试保存它。

如果我在Child上创建before_save回调并在其中保存parent,则会成功保存而不会出错。

1 个答案:

答案 0 :(得分:2)

你如何保存child?如果您没有创建或修改与父级的关联,则rails不会修改父级记录。你是否真的希望每次修改孩子时不必要地更换parent

你需要使用before_save来做你想做的事(如你所说)。