我正在学习Rails,所以这是一个非常简单的问题。
我正在尝试将用户< -Posts与经典的一对多风格用户自己的帖子相关联。
以下是我的模特:
class Post < ActiveRecord::Base
attr_accessible :body
belongs_to :user
end
class User < ActiveRecord::Base
has_many :posts
attr_accessible :email, :password, :password_confirmation
end
我还创建了必要的迁移:
class AddUserIdToPosts < ActiveRecord::Migration
def self.up
add_column :posts, :user_id, :integer
end
def self.down
remove_column :posts, :user_id
end
end
我面临的问题是试图找到所有这些并正确建立关联。
我打电话的时候:
@user = User.first
@user.post.build
我得到了
NoMethodError: undefined method `post' for #<User:0x10319fbc8>
我错过了什么?
答案 0 :(得分:2)
应为user.posts
但post.user
答案 1 :(得分:2)
如果用户has_many
发布正确的电话是:
@user.posts.build
注意复数帖子。
答案 2 :(得分:2)
您已将关联User
模型声明为has_many :posts
,因此您可以使用@user.posts.build
代替@user.post.build
来获取关联。
答案 3 :(得分:1)
你有一个has_many关系,所以:
@user.posts.build