Реализация анонимного и зарегистрированного пользователя с act_as_commentable?
Я использую act_as_commentable, и мне интересно, есть ли у кого-нибудь хорошие идеи о том, как разрешить анонимным и зарегистрированным пользователям оставлять комментарии? Это означает, что если зарегистрированный пользователь прошел проверку подлинности, я хочу, чтобы комментарий был отмечен его именем и т. Д. Но я также хочу, чтобы анонимный пользователь мог оставлять комментарии и записывать имя и адрес электронной почты. Я использую Devise для аутентификации.
У меня есть идея, как сделать эту работу, но она кажется мне немного хакерской. Интересно, есть ли у кого-нибудь мысли?
1 ответ
Я не знаю ваш плагин, но если вы используете его (https://github.com/jackdempsey/acts_as_commentable), он кажется очень простым...
Модель комментариев имеет отношение к пользователю, которое не является обязательным. Поэтому в вашей новой форме комментария я бы просто добавил два тега text_field_tag, если пользователь не вошел в систему (text_field_tag: first_name, text_field_tag: last_name).
И я бы просто написал действие создания для комментариев следующим образом:
def create
@comment = Comment.new(:commentable => @your_object, :user => current_user, :first_name => params[:first_name], :last_name => params[:last_name])
...
end
если пользователь не вошел в систему, current_user будет нулевым, и это не вызовет никаких проблем.
Вы можете написать вспомогательный метод для отображения имени комментария, в зависимости от того, есть ли у него пользователь или нет, как это...
# Displays the user's login if any or else the first name and last name
def displayed_name(comment)
comment.user ? comment.user.login : "#{comment.first_name} #{comment.last_name}"
end