关联构建方法最后创建空的nil类

时间:2013-12-19 10:21:41

标签: ruby-on-rails ruby ruby-on-rails-4

我不知道为什么,但是当我循环@booth.chats.build然后运行

使用下面的代码,我在迭代的最后部分得到一个空的chat

- @booth.chats.each_with_index do |chat, index|
          = render partial: "chats/chat", locals: { chat: chat }

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

@booth.chats.build将构建一个实例,但不会像下面那样保存

#<Chat id: nil, name: nil, ...

所以在你尝试执行@booths.chats.each_with_index之后,它会返回空的,因为它没有保存

希望我能够清除你的怀疑

您可以更好地保存[@booths.chats.save!],然后尝试

答案 1 :(得分:0)

“build”方法创建一个新的Chat对象并将其附加到“聊天”关联(不保存到数据库)。您仍然可以枚举“聊天”关联,而无需先调用“构建”。