Devise のカスタム登録のフォームに問題があります。このフォームには、フォーム上で同時に作成するユーザー モデルとビジネス モデルの両方の情報が必要です。これが複数ステップの登録フォームであってはならないことが重要です。要件の一部として、ユーザー モデルとビジネス モデルの両方を同時に記入する必要があります。
私は次のモデルを持っています:
user.rb
class User < ActiveRecord::Base
has_many :businessusers, :include => :business
has_many :businesses, :through => :businessusers
accepts_nested_attributes_for :businessusers
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :role, :businessusers
business.rb
class Business < ActiveRecord::Base
has_many :businessusers
has_many :users, :through => :businessusers
businessuser.rb
class Businessuser < ActiveRecord::Base
belongs_to :business
belongs_to :user
end
businessusers migration
create_table :businessusers do |t|
t.integer :user_id
t.integer :business_id
end
私の登録フォームには、次のコードがあります。
Business Information
<br>
<%= f.fields_for :businessusers do |business_form| %>
<%= business_form.input :name %>
<%= business_form.input :address_line1 %>
<%= business_form.input :address_line2 %>
<%= business_form.input :city %>
最後に、ここに私のコントローラーがあります:
custom_registration_controller.rb
def create
@user=User.new(params[:user])
@business = @user.businesses.build(params[:business]) unless params[:business] [:name].blank?
end
編集:一括割り当て属性の問題は解決しましたが、別の問題があります。
誰かが私が間違っている場所を知っていますか? 以前は、businessusers テーブルで id を無効にしていました。しかし、これにより、テーブルにプライマリ ID が必要であるというエラーが表示されました。そのため、 field を許可する:id
と、フォームにビジネス フィールドが含まれなくなります。
ありがとう!