Rails设计 – 使用关联模型注册用户
我在这个主题上遇到了一些SO问题,但所有这些问题似乎已经过时或者只是编码错误。
问题:我正在注册用户,作为结帐流程的一部分。 我想在用户注册时收集用户的地址。 我有一个用户模型和一个地址模型。 我似乎无法弄清楚如何正确覆盖Devise的注册控制器以允许额外的参数。
这是我开始的:
class User :destroy accepts_nested_attributes_for :addresses end
我也有我的地址模型:
class Address < ActiveRecord::Base belongs_to :state belongs_to :user end
…在routes.rb中:
devise_for :users, controllers: {registrations: 'registrations'}
最后,我尝试覆盖设计注册的控制器:
class RegistrationsController [:address, :address2, :city, :state_id, :zip_code]) } end end
在您的application_controller.rb中
class ApplicationController < ActionController::Base before_action :configure_strong_params, if: :devise_controller? def configure_strong_params devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :name, :addresses_attributes => [:address, :address2, :city, :state_id, :zip_code]) } end end
现在在您的注册表单中,您可以使用address_attributes&devise注册参数将接受此操作。
现在要暂停filter链的救援,请在registrations_controller.rb
文件中尝试此操作
class RegistrationsController < Devise::RegistrationsController skip_before_filter :require_no_authentication, only: :create #other codes end