我有一个名为 DefaultCompany 的模型,它没有控制器,而是通过 Companies_controller 创建它,如果他们选中表单上的“默认公司”复选框,它会调用 user.set_default_company(定义如下)。
默认公司是 user_id 和 company_id 的连接表。
class DefaultCompany < ActiveRecord::Base
attr_accessible :company_id, :user_id
belongs_to :company
belongs_to :user
end
我不断收到以下错误:
Can't mass-assign protected attributes: company, user
app/models/user.rb:22:in `set_default_company'
app/controllers/companies_controller.rb:23:in `create'
我已将我的用户模型设置为能够接受 DefaultCompany 的嵌套属性,如下所示
class User < ActiveRecord::Base
has_one :default_company
accepts_nested_attributes_for :default_company
attr_accessible :default_company_attributes
def set_default_company(company)
exists = DefaultCompany.find(self.id)
if exists
exists.update_attributes(company: company)
else
DefaultCompany.create(company: company, user: self)
end
end
end
这是company_controller.rb的创建操作
def create
@company = Company.new(params[:company])
if @company.save
if params[:default_company]
current_user.set_default_company @company.id
end
flash[:notice] = "Company was successfully created."
Role.assign_creator(@company.id, current_user.id)
redirect_to @company
else
redirect_to new_company_path
end
end
所以我不确定我需要添加什么才能通过大规模分配,有人可以帮我弄清楚/解释这个吗?