当前位置:  开发笔记 > 后端 > 正文

Rails关联未正确加载

如何解决《Rails关联未正确加载》经验,为你挑选了0个好方法。

我的父类有时不会在孩子的after_save回调中加载它的所有子节点.

我有两个型号:

class Parent < ActiveRecord::Base
  has_many :children

  def update_something
    # explained below
  end
end

class Child < ActiveRecord::Base
  belongs_to :parent

  after_save :tell_parent_to_update

  def tell_parent_to_update
    parent.update_something
  end
end

我有一个测试我正在运行它,它只检查2件事.parent.children.countparent.children.length.两者都应该是4.我知道计数有时是不同的,但(据我所知)它不应该在这里.

如果我定义update_something为迭代children:

def update_something
  children.each do |child|
  end
end

测试失败 - 循环将执行一次(并将返回单个子节点的数组 - 第一次 child创建).

否则,我可以放任何代码,只要它没有提及children它会工作.这就像对孩子的呼叫导致关联加载错误的东西.

强制重新加载修复它:

def update_something
  children(true).each do |child|
  end
end

但这很hacky,如果可能的话我宁愿修复root问题.

这是我的错误,还是铁轨错误(如果有的话,我可以做些什么来解决这个问题)?

我怀疑这很重要,但这是一个使用sqlite3的测试环境.虽然如果我在单个开发控制台会话中创建和测试记录,它也会在开发环境中失败.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有