Rails 3 + Devise: форма нового комментария, также содержащая поля модели пользователя? - PullRequest
1 голос
/ 26 июня 2011

Идея состоит в том, чтобы иметь то, что вы видели миллион раз прежде, форму «опубликовать новый комментарий» со следующими полями (для посетителей, которые не вошли в систему): имя, адрес электронной почты, веб-сайт и сообщение

Обратите внимание, что поле «message» принадлежит модели Comment, а остальные 3 принадлежат модели User.Поскольку модель User является пригодной для Devise, я хотел бы иметь возможность использовать эти проверки (а также проверки для поля комментариев) в этой гибридной форме.

Возможно ли это?Могу ли я добавить accepts_nested_attributes_for(:user) к модели комментариев, даже если комментарий является дочерним элементом пользователя?

Спасибо!

1 Ответ

0 голосов
/ 26 июня 2011

Я не уверен, что это именно то, что вы просите, но вы можете сделать что-то вроде этого ... сделать виртуальный аксессор в вашей модели пользователя для комментария:

def with_comment
  if params[:user][:comment]
    @comment = self.comments.build params[:user][:comment]
  else
    @comment = self.comments.build 
  end
end 

def with_comment=(comment)
  self.comments.build comment
end 

Затем в app / views / users / registrations / new.html.erb:

<%= form_for(resource.with_comment(params),
             :as => resource_name,
             :url => registration_path(resource_name)) do |f| %>

   <% f.fields_for :with_comment, resource.with_comment do |cf| %>
      <% cf.text_area :message %>
   ...

Я не проверял это, но он адаптирован из аналогичного рабочего кода, который я использую.

Это на самом деле пользовательская форма с добавленным комментарием.Я просто позволил devise делать свое дело и стараться не бороться с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...