将用户ID添加到评论模型

时间:2014-02-05 22:25:44

标签: ruby-on-rails comments associations

我正在学习本教程:

http://guides.rubyonrails.org/getting_started.html#adding-a-second-model

使用commentercomment时,用户可以添加姓名和消息,但我想将评论与用户ID相关联(我已经拥有用户)

它使用 rails generate model Comment commenter:string body:text post:references但我想将commenter:string替换为用户ID关联(user_id:integer?)。在先前的问题中有人建议author_id:integer,但它不起作用。不知道从哪里开始,似乎没有关于这个主题的任何教程(我已经阅读了关于协会等的RoR帮助指南,但找不到使用评论模型生成用户ID的正确方法)

comments_controller.rb

def create
@listing = Listing.find(params[:listing_id])
@comment = @listing.comments.create(params[:comment])
redirect_to listing_path(@listing)
end

1 个答案:

答案 0 :(得分:1)

您可以像这样生成评论模式:

  

rails generate model注释用户:引用正文:文本帖子:引用

您指定的references类型实际上会创建user_id:integer列,并为belongs_to模型添加Comment关联:

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :post
end

如果您确实想要Comment#commenter关联来引用用户而非Comment#user,则可以在Comment模型中定义,如下所示:

class Comment < ActiveRecord::Base
  belongs_to :commenter, class_name: 'User', foreign_key: 'user_id'
  belongs_to :post
end