Прикрепление пользователя к комментариям
У меня есть рабочая система комментирования, которая полиморфна, так что комментарии могут быть добавлены к пользователям и постам. Однако я не могу понять, как прикрепить зарегистрированного пользователя (комментатор) к комментарию.
comments_controller.rb:
class CommentsController < ApplicationController
before_filter :authenticate_user!, :only => [:create, :destroy]
def index
@commentable = find_commentable
@comments = @commentable.comments
end
def new
@commentable = find_commentable
end
def create
@commentable = find_commentable
@comment = @commentable.comments.build(params[:comment])
if @comment.save
flash[:notice] = "Successfully created comment."
redirect_to get_master
else
render :action => 'new'
end
end
def destroy
@comment = Comment.find(params[:id])
@comment.destroy
respond_to do |format|
format.html { redirect_to comments_url }
format.json { head :no_content }
end
end
protected
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
def get_master
@parent = @comment.commentable
if @parent.respond_to?('commentable_type')
@comment = @parent
get_master
else
return @parent
end
end
end
1 ответ
Решение
Разве это не так просто, как добавить его до save
?
@comment.commenter = current_user
Вы также можете добавить его на ваш взгляд:
f.hidden_field :commenter_id, value: current_user.id
Я думаю, что я предпочел бы установить его в представлении.