Rails:使用build来创建一个不存在的模型

时间:2014-06-11 22:05:02

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

假设我有一个模型topic,它有一个moderator。我想为一个主题建立一个新帖子。

在我的控制器中:

@topic = Topic.find(:id)
@moderator = @topic.moderator.build # error points to this line

错误:

undefined method `build' for nil:NilClass

1 个答案:

答案 0 :(得分:1)

如果关系是在模型中声明的,只要它是has_many就可能已经声明:

has_many :posts

所以你需要打电话:

@post = @topic.posts.build

禁止你有一个has_one关系:

has_one :moderator

@moderator = @post.build_moderator

解决方案:

Using build with a has_one association in rails

另请参阅Rails指南:关联。 http://guides.rubyonrails.org/association_basics.html