【问题标题】:Autosave on 'belongs_to` Association Fails To Save Associated Model“belongs_to”关联上的自动保存无法保存关联模型
【发布时间】:2013-12-17 16:55:11
【问题描述】:

我有一个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 保存在那里,它会成功保存而不会出错。

【问题讨论】:

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


    【解决方案1】:

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

    您需要使用before_save 来做您想做的事情(正如您所提到的)。

    【讨论】:

    • 谢谢。这就说得通了。因此,在这种情况下,我想检查 Child 模型的 tags 关联是否在 before_save 回调中发生了变化,如果有,则只保存其 parent
    • 这就是会做的。 ;)
    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多