Rails:用户的最佳关联模型 - >帖子 - >评论模型在一个论坛的网站类型?

Hem*_*nth 5 ruby-on-rails ruby-on-rails-3

我正在创建一个论坛网站,每个注册用户可以写很多帖子,
每个帖子都可以有很多评论.
此外,每个用户都可以评论由任何其他用户创建的任何帖子.

      has_many              has_many
user ------------> Posts -------------- > Comments  
  |                                          ^
  |                                          |   
  |               has_many                   |
  |-------------------------------------------          
      belongs_to
Post ------------> User
  ^                 ^ 
  |                 |
  |                 |
  belongs_to     belongs_to
  |                 |
  |                 |
Comments-------------  
Run Code Online (Sandbox Code Playgroud)

我无法使用"post.comment.user"或
commenter_email = comments.user.email 获取评论的用户详细信息
如何实现此目的?
粘贴我的模型供参考: -

class Comment < ActiveRecord::Base  
belongs_to :post  
belongs_to :user  
end  
class Post < ActiveRecord::Base  
  has_many :comments, :dependent => :destroy  
end  
class User < ActiveRecord::Base  
  devise :database_authenticatable, :registerable,  
     :recoverable, :rememberable, :trackable, :validatable  
  attr_accessible :email, :password, :password_confirmation, :remember_me   
  has_many :posts  
  has_many :comments  
end   
Run Code Online (Sandbox Code Playgroud)

我的架构在这里: -

create_table "comments", :force => true do |t|  
t.integer  "post_id"  
t.integer  "user_id"  
t.text     "comment_text"  
t.datetime "created_at"  
t.datetime "updated_at"  
end  

create_table "posts", :force => true do |t|  
t.integer  "user_id"  
t.integer  "sell_or_buy"  
t.string   "title"  
t.text     "body"  
t.datetime "created_at"  
t.datetime "updated_at"  
end  

create_table "users", :force => true do |t|  
t.string   "email",  
t.string   "encrypted_password",
t.datetime "created_at"  
t.datetime "updated_at"  
end 
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 3.0.1.
请提出您的想法.

Pet*_*ong 8

由于你的帖子有很多评论,所以它post.comments不是post.comment

由于comments是评论列表,comments.user也无效.

您将需要评论的ID,以便您可以找到特定评论的用户:

post.comments.find(params[:id]).user
Run Code Online (Sandbox Code Playgroud)

当然,你也可以得到所有用户:

post.comments.all.collect(&:user)
Run Code Online (Sandbox Code Playgroud)