Реализация анонимного и зарегистрированного пользователя с 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
Другие вопросы по тегам