2013-11-28 99 views
1

这是一个非常简单的活动记录关联,我尝试创建,令人沮丧的是未成功完成。无法创建活动记录关联

我有两个模型,发布和用户。 User.rb除了has_many :posts 和Post.rb只有belongs_to :user。 我已经运行rake数据库:迁移并验证我的帖子表中有一个user_id列。

但是,当我转到控制台时,我无法在新对象之间建立关联。

首先,我作出这样max = User.create(:name=>"Max") 当一个新的用户实例,我作出这样post = Post.create(:user_id=>1, title=>"FirstPost")

新邮实例,然后我试着键入max.posts却得到了一个NoMethodError undefined method 'post=' 如果我试图建立的关联像max.post = post , 我犯了同样的错误。

最后,我尝试将attr_accessor :posts添加到用户模型。

现在,我可以键入max.posts,但我只是得到nil

缺少什么我在这里?

+1

后去完整的错误,请 –

+0

现在,我接着说:attr_accessor:posts',我不再收到错误,只需'nil' –

+1

你能添加完整的代码和完整的错误和你正在做什么的日志? '我做到了,得到了这个'并不实际。 – sevenseacat

回答

1

这是因为用户中没有'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 
+0

看着“替代方式” - 所以我需要在我的'posts'表中有一个'user'列,对吧?为什么会这样,但是设置'user_id'属性不起作用? –

+1

你在哪里指定user_id“1”,它可能不是最后创建的用户的ID。 –

+0

非常感谢 的帮助 –