Rails 3 текущий идентификатор пользователя в комментариях? - PullRequest
0 голосов
/ 20 декабря 2011

Так что я работаю над приложением 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

Как я могу получить идентификатор пользователя для отображения с текущими комментариями?У меня есть тип комментария и идентификатор комментария. Я просто ищу способ получить его, чтобы мог появиться user_id.Есть предложения?

Ответы [ 2 ]

5 голосов
/ 21 декабря 2011

Вы должны добавить hidden_field к вашей частичной форме, где вы храните current_user.id

что-то вроде:

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

конечно, у вас должно быть полеuser_id в вашей модели комментариев, так как комментарий принадлежит пользователю и пользователю has_many comments.

update:

Что бы ни указывал, этот подход может привести квопросы безопасности, поскольку скрытое поле может быть изменено пользователем в браузере, например, с помощью firebug.В этом случае, вероятно, лучше оставить это поле в представлении и создать комментарий в контроллере, используя

<%= current_user.comments.create(params[:comment]) %>
0 голосов
/ 21 декабря 2011

То, как у вас есть сейчас, это только один способ.Кроме того, вы должны сделать его полиморфным, попробуйте добавить:

comment.rb

belongs_to :user
belongs_to :commentable, :polymorphic => true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...