コントローラを持たないDefaultCompanyというモデルがあります。代わりに、フォームの[デフォルトの会社]チェックボックスをオンにした場合にuser.set_default_company(以下で定義)を呼び出すcompanys_controllerを使用してモデルを作成します。
デフォルトの会社は、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
そして、これがcompanys_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
ですから、大量割り当てが通過するために何を追加する必要があるのかわかりません。誰かがこれを理解/説明するのを手伝ってくれますか?