2013-11-16 3 views
0

У меня есть две разные модели под названием «Нарушение и блокировка». Они относятся к моей модели User и пользователю has_one Lock и many Нарушения.Использование form_for для создания двух записей одновременно

Администраторы имеют возможность создавать Locks on Users, а также давать им Нарушения, однако для серьезных правонарушений необходимо было бы дать Нарушение и одновременно поставить Lock на пользователя.

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

Есть ли у кого-нибудь идеи относительно того, как я могу это решить?

ответ

1

проверить поля_и_пользователя, а также accepts_nested_attributes_for. Комбинация двух будет делать то, что вам нужно.

Пример:

<%= form_for @person do |person_form| %> 
    ... 
    <%= person_form.fields_for :address do |address_fields| %> 
    ... 
    Delete: <%= address_fields.check_box :_destroy %> 
    <% end %> 
    ... 
<% end %> 

И ваш человек класс будет что-то вроде:

class Person < ActiveRecord::Base 
    has_one :address 
    accepts_nested_attributes_for :address 
end 
+0

Будет ли это работать, если оба 'Infraction' и' Lock' принадлежал 'User'? Я не хочу обновлять 'User' при добавлении блокировок или нарушений –

+0

Вам не нужно обновлять какие-либо атрибуты на объекте пользователя; просто используйте его, чтобы создать нужную форму и позволить ей обновлять то, что нужно, в ваших связанных объектах. И вам не нужно менять тип ассоциации между User и Lock; has_one должно быть в порядке. Какова обратная связь от Lock to User, указанная как? – wkhatch

+0

'принадлежит_to: user' –

Смежные вопросы