Я не уверен, что это именно то, что вы просите, но вы можете сделать что-то вроде этого ... сделать виртуальный аксессор в вашей модели пользователя для комментария:
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 делать свое дело и стараться не бороться с ним.