简单的ActiveRecord关联问题

时间:2011-07-13 13:40:58

标签: ruby-on-rails ruby-on-rails-3

我正在学习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>

我错过了什么?

4 个答案:

答案 0 :(得分:2)

应为user.postspost.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