我有下面定义的模型结构。 我试图将连接表的附加属性与用户一起保存到计划中。 在rails控制台中,我执行以下操作(用于测试)。我收到了一个群发分配问题,我在这里跟踪了很多帖子,并且那里的所有accepted_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