Одним из способов достижения желаемого результата является то, что вы можете создать форму, использующую преимущества поддержки вложенных атрибутов в Rails:
<%= form_for(@user) do |f| %>
<%= f.label :my_user_attribute %>
<%= f.text_field :my_user_attribute %>
<%= f.fields_for :profile do |fp| %>
<p>
<%= fp.label :my_profile_attribute %>
<%= fp.text_field :my_profile_attribute %>
</p>
<% end %>
<%= f.submit %>
<% end %>
Вам также необходимо добавить в свой класс пользователя следующее:
accepts_nested_attributes_for :profile
Подробнее о вложенных атрибутах Active Record можно узнать здесь .
Вы можете прочитать больше о помощниках формы ActionView здесь (поиск по странице "Примеры вложенных атрибутов").
Если вы используете этот подход, наряду с хорошими проверками в обеих моделях, вам не придется беспокоиться об отслеживании идентификаторов базы данных, поскольку ActiveRecord будет одновременно создавать обе (но не до тех пор, пока оба объекта модели не будут действительными). ).