Use o modelo aninhado de trilhos para * criar * objeto externo e simultaneamente * editar * objeto aninhado existent

Usando o Rails 2.3.8

Goal é paracri um Blogger enquanto simultaneamente update o modelo de usuário aninhado (caso as informações tenham sido alteradas etc.) OU crie um novo usuário, se ainda não existi

Modelo

class Blogger < ActiveRecord::Base
  belongs_to :user
  accepts_nested_attributes_for :user
end

ontrolador @Blogger:

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

Formato

<% 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 bem quando estou criando um novo usuário por meio do modelo aninhado, mas falhará se o usuário aninhado já existir e tiver um ID (nesse caso, eu gostaria que ele simplesmente atualizasse esse usuário

Erro

Couldn't find User with ID=7 for Blogger with ID=

Esta pergunta SO trata de um problema semelhante, e a única resposta sugere que o Rails simplesmente não funcionará dessa maneira. A resposta sugere simplesmente passar o ID do item existente em vez de mostrar o formulário para ele - o que funciona bem, exceto que eu gostaria de permitir edições nos atributos do Usuário, se houver algu

Formulários Rails profundamente aninhados usando o perten_to não estão funcionand

Suggestions? Isso não parece uma situação particularmente incomum e parece que deve haver uma solução.

questionAnswers(3)

yourAnswerToTheQuestion