Asociación de dos modelos en rieles (usuario y perfil)

Soy nuevo en Rails. Estoy creando una aplicación que tiene un modelo de usuario y un modelo de perfil.

Quiero asociar estos modelos de manera que:
- Después de que el usuario crea una cuenta, se envía automáticamente a la página "crear perfil", y el perfil que crea se conecta solo a ese usuario en particular.
- Solo el usuario que posee el perfil puede editarlo.

Generé el modelo de usuario usando nifty_generators. Cuando el usuario pulsa enviar para la creación de la cuenta, lo redirigiré a la vista "nuevo perfil" para crear un perfil. Hice esto editando la ruta de redirección en el controlador de usuario. El controlador de usuario se ve así:

def create
  @user = User.new(params[:user])
  if @user.save
    session[:user_id] = @user.id
    flash[:notice] = "Thank you for signing up! You are now logged in."
    redirect_to new_profile_path
  else
    render :action => 'new'
  end
end

Esto estaba funcionando, pero el problema era que la aplicación no parecía reconocer que el perfil estaba conectado a ese usuario en particular. Pude crear perfiles, pero no parecía haber una relación entre el perfil y el usuario.

Listas de modelos de mi perfil: belongs_to: user
Mi lista de modelos de usuario: tiene _one: perfil

El archivo Mi rutas.rb enumera lo siguiente:
map.resources: usuarios,: has_one =>: perfil
map.resources: perfiles

Tengo una clave foránea user_id en la tabla de perfiles. Mi esquema se ve así:

create_table "profiles", :force => true do |t|
  t.integer  "user_id"
  t.string   "name"
  t.string   "address1"
  t.string   "address2"
  t.string   "city"
  t.string   "state"
  t.string   "zip"
  t.string   "phone"
  t.string   "email"
  t.string   "website"
  t.text     "description"
  t.string   "category"
  t.datetime "created_at"
  t.datetime "updated_at"
end

create_table "users", :force => true do |t|
  t.string   "username"
  t.string   "email"
  t.string   "password_hash"
  t.string   "password_salt"
  t.datetime "created_at"
  t.datetime "updated_at"
end

Para intentar conectar el perfil al usuario, actualicé el archivo profiles_controller.rb con lo siguiente, que básicamente extrapolamos de la Guía de introducción de Rails. Mi opinión es que en mi aplicación, los perfiles se conectan a los usuarios de la misma manera que en la aplicación de Introducción de Rails, los comentarios se conectan a las publicaciones. Aquí están las partes relevantes de mi controlador de perfiles. Puedo proporcionar todo el asunto si ayuda:

def new
  @user = User.find(params[:user_id])
  @profile = @user.profile.build
end

def create
  @user = User.find(params[:user_id])
  @profile = @user.profile.build(params[:profile])
  if @profile.save
    flash[:notice] = 'Profile was successfully created.'
    redirect_to(@profile)
  else
    flash[:notice] = 'Error.  Something went wrong.'
    render :action => "new"
  end

fin

Después de realizar estas actualizaciones en el controlador de perfiles, ahora cuando presento en la pantalla de creación de la cuenta, se me redirige a una página de error que dice:

ActiveRecord :: RecordNotFound en ProfilesController # new
No se pudo encontrar un usuario sin una ID

Todo esto parece un caso de uso bastante sencillo de Rails, pero no estoy seguro de qué piezas están mal. ¡Gracias de antemano por tu ayuda!

Respuestas a la pregunta(3)

Su respuesta a la pregunta