以下に定義されたモデル構造があります。結合テーブルの追加属性をユーザーと共にプランに保存しようとしています。Railsコンソールで、次のことを行います(テスト用)。一括割り当ての問題が発生しました。ここで多くの投稿をフォローしましたが、accepts_nested_attributes_for のアドバイスはすべて役に立ちませんでした。以下を実行するにはどうすればよいですか?
u = User.last
p = Plan.new(:name => 'some name here', :description => 'something here')
p.userPlans.build(:user => u, :is_owner => true)
# error on the above 'can't mass-assign protected attributes: user'
# would like to do p.userPlans.build for a number of users
p.save
複数のユーザーを追加の結合テーブル属性とともにプランに保存してから、単一の保存を行う方法はありますか? 私はただやるべきですか:
u = User.last
p = Plan.new(:name => 'some name here', :description => 'something here')
p.userPlans.build(:user_id => u.id, :is_owner => true)
p.save
したがって、私が望むのは計画です。複数のユーザーがいて、それらのユーザーの一部は is_owner = true に設定され、一部のユーザーは false に設定されます。User オブジェクトを直接 userPlans.build に渡すことができると思いましたか?
どんな援助でも大歓迎です。ここで何が欠けているのかわかりませんか、それとも私がやっていることは受け入れられますか?
#user is devise
class User < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation,
:remember_me, :token_authenticatable,
:invited, :confirmed_at, :signed_in_count,
:first_name, :last_name, :userPlans_attributes
has_many :userPlans
has_many :plans, :through => :userPlans
accepts_nested_attributes_for :userPlans, :allow_destroy => true
.
.
.
class Plan < ActiveRecord::Base
attr_accessible :description, :name, :user_id, :userPlans_attributes
has_many :userPlans
has_many :users, :through => :userPlans
accepts_nested_attributes_for :userPlans, :allow_destroy => true
end
class UserPlan < ActiveRecord::Base
attr_accessible :decision, :is_owner, :plan_id, :token, :user_id
belongs_to :plan
belongs_to :user
end