¿Usa el modelo anidado de rieles para * crear * objeto externo y simultáneamente * editar * objeto anidado existente?
Utilizando Rails 2.3.8
Goal escrea un Blogger mientras que simultáneamente actualizando el modelo de Usuario anidado (en caso de que la información haya cambiado, etc.), O cree un nuevo usuario si aún no existe.
Modelo
class Blogger < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
Blogger controlador:
def new
@blogger = Blogger.new
if user = self.get_user_from_session
@blogger.user = user
else
@blogger.build_user
end
# get_user_from_session returns existing user
# saved in session (if there is one)
end
def create
@blogger = Blogger.new(params[:blogger])
# ...
end
Formar
<% form_for(@blogger) do |blogger_form| %>
<% blogger_form.fields_for :user do |user_form| %>
<%= user_form.label :first_name %>
<%= user_form.text_field :first_name %>
# ... other fields for user
<% end %>
# ... other fields for blogger
<% end %>
Funciona bien cuando estoy creando un nuevo usuario a través del modelo anidado, pero falla si el usuario anidado ya existe y tiene una ID (en cuyo caso me gustaría que simplemente actualice a ese usuario).
Error
Couldn't find User with ID=7 for Blogger with ID=
Esta pregunta SO trata un problema similar, y solo la respuesta sugiere que Rails simplemente no funcionará de esa manera. La respuesta sugiere simplemente pasar el ID del elemento existente en lugar de mostrar el formulario, lo que funciona bien, excepto que me gustaría permitir modificaciones en los atributos del usuario si hay alguno.
@ Formas de rieles profundamente anidados usando belong_to no funcionan?
Sugerencias? Esto no parece una situación particularmente infrecuente, y parece que debe haber una solución.