У пользователя много заказов, поэтому accepts_nested_attributes_for
будет использоваться в модели пользователя.
http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
Вложенные ресурсы не могут быть сохранены, если родительский элемент отсутствует, поэтому сначала вы создадите пользователя, а затем создадите его заказы.
Обычно, если user
не существует, он будет перенаправлен на страницу регистрации. Если вы не хотите этого, вы можете сделать что-то вроде следующего в вашем OrderController#new
action
if current_user
@order=current_user.orders.build
else
@user=User.new
end
И в своей форме заказа вы можете проверить, входит ли пользователь в систему, просто создать форму заказа, если не создать форму пользователя, а затем добавить вложенный файл для заказа
# app/views/order/_form.html.erb
<% if user_signed_in? %>
//order form
<% else %>
// user form
<% form_for @user do |uf| %>
<%= uf.text_filed :email %>
<%= uf.password_filed :password %>
//now order fileds
<%= uf.fields_for :orders do |of| %>
//porder fileds
<% end %>
<% end %>
<% end %>
Затем в create
действии для пользователя и заказа необходимо добавить соответствующую проверку
Вот хак, показывающий, как вы можете использовать accepts_nested_attributes_for
с belongs_to
:
accept_nested_attributes_for с принадлежащим_ к полиморфному