2

以下に定義されたモデル構造があります。結合テーブルの追加属性をユーザーと共にプランに保存しようとしています。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
4

0 に答える 0