以下是关联:
Class Tree
has_many :apples
end
Class Apple
belongs_to :tree
end
这是我的测试设置代码:
let!(:apple) { create(:apple, tree: tree) }
let(:tree) { create(:tree, :growing) }
为了tree.apples.first.apple_core
不会出现cannot call .apple_core on nil
之类的错误,我需要tree.reload
。为什么是这样?在调用has_many
之后内存树似乎应该在内存中加载let!
关联吗?我阅读reload
上的帖子,我仍然对发生的事情感到困惑?
答案 0 :(得分:0)
我认为这是因为在apply
Rspec 不要重新加载tree
但只是使用其id
,所以要让关系保持最新状态必须强行重新加载它,如果你使用 Factory girl ,只需在after create handler中执行:
after(:create) do |item, evaluator|
item.tree.reload
end