Rails 3当前用户ID评论?

时间:2011-12-20 19:20:39

标签: ruby-on-rails-3

所以我正在使用rails应用程序,用户可以对其他用户上传的照片或视频发表评论,到目前为止一切都很好,除非我无法获得与评论帖子的人相关联的当前user_id。这就是我到目前为止所拥有的。

user.rb

has_many :comments,  :dependent => :destroy

photo.rb

has_many :comments, :as => :commentable

video.rb

has_many :comments, :as => :commentable

comments_controller.rb

def create
  @commentable = find_commentable
  @comment = @commentable.comments.build(params[:comment])
 if @comment.save
   redirect_to :id => nil, :notice => "Successfully created comment."
 else
   render :action => 'new'
 end
end

如何使用当前评论显示用户ID?我有评论类型和评论ID我只是想找到一种方法,以便user_id可以出现。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您应该在表单部分添加hidden_field,存储current_user.id

类似的东西:

  <%= f.hidden_field :user_id, :value => current_user.id %> 

当然,您的评论模型中应该有一个字段user_id,作为评论belongs_to用户和用户has_many评论。

<强>更新

ofca指出,这种方法可能导致安全问题,因为用户可以在浏览器中修改隐藏字段,例如,使用萤火虫。 在这种情况下,最好在视图中省略此字段,并使用

在控制器中创建注释
<%= current_user.comments.create(params[:comment]) %>

答案 1 :(得分:0)

现在的方式,它只是单向设置。 另外,你必须使它具有多态性 尝试添加:

comment.rb

belongs_to :user
belongs_to :commentable, :polymorphic => true