这是一个非常简单的Active Record关联,我试图创建它并且令人沮丧的是没有成功。
我有两个模型,帖子和用户。
User.rb只有has_many :posts
和Post.rb只有belongs_to :user
。
我运行了rake db:migrate并验证了我的posts表中有一个user_id列。
但是,当我进入控制台时,我无法在新对象之间建立关联。
首先,我创建了一个像max = User.create(:name=>"Max")
这样的新用户实例
接下来,我创建一个新的Post实例,如post = Post.create(:user_id=>1, title=>"FirstPost")
然后我尝试输入max.posts
,但获得NoMethodError undefined method 'post='
如果我尝试设置max.post = post
之类的关联,我会得到同样的错误。
最后,我尝试将attr_accessor :posts
添加到用户模型中。
现在,我可以输入max.posts
,但我只是nil
。
我在这里缺少什么?
答案 0 :(得分:1)
那是因为User中没有'post ='方法。
尝试以下方法:
max = User.create(:name=> "Max")
max.posts.create(:title => "FirstPost")
max.posts
作为替代方式:
max = User.create(:name=> "Max")
post = Post.new(:user => max, :title => "FirstPost")
post.save
max.posts