Rails Devise - Benutzer mit zugeordnetem Modell registrieren

Ich bin auf ein paar SO Fragen zu diesem Thema gestoßen, aber alle scheinenveralte oder einfach schlechte Codierpraxis.

Problem: Ich melde einen Benutzer im Rahmen eines Checkout-Vorgangs an. Ich möchte die Adresse des Benutzers bei der Anmeldung erfassen. Ich habe ein Benutzermodell und ein Adressmodell. Ich kann anscheinend nicht herausfinden, wie der Controller der Devise-Registrierung richtig überschrieben werden kann, um die zusätzlichen Parameter zuzulassen.

Hier ist, womit ich angefangen habe:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_many :orders
  has_many :addresses, :dependent => :destroy

  accepts_nested_attributes_for :addresses

end

Ich habe auch mein Adressmodell:

class Address < ActiveRecord::Base
  belongs_to :state
  belongs_to :user
end

... in routes.rb:

   devise_for :users, controllers: {registrations: 'registrations'}

Und schließlich mein Versuch, den Controller der Geräteregistrierung zu überschreiben:

class RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  # GET /users/sign_up
  def new

    # Override Devise default behaviour and create a profile as well
    build_resource({})
    resource.build_address
    respond_with self.resource
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u|
      u.permit(:email, :password, :password_confirmation, :address_attributes => [:address, :address2, :city, :state_id, :zip_code])
    }
  end
end

Antworten auf die Frage(2)

Ihre Antwort auf die Frage