所以我正在使用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可以出现。有什么建议吗?
答案 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