Где @user - недавно созданный пользователь, а @person - существующий.
@user.person = @person
@user.save
С другой стороны:
User.new :person => @person, ... #other attributes
или в форме параметров:
User.new(params[:user].merge({person => @person}))
Что касается форм:
<% form_for @user do |f| %>
...
<% fields_for :person do |p| %>
<%= p.collection_select, :id, Person.all, :id, :name, :include_blank => "Use fields to create a person"%>
<%= p.label_for :name%>
<%= p.text_field :name %>
...
<% end %>
<% end %>
А в пользовательском контроллере:
def create
@user = User.create(params[:user])
@person = nil
if params[:person][:id]
@person = Person.find(params[:person][:id])
else
@person = Person.create(params[:person])
end
@user.person = @person
...
end