私のClient
モデルはattr_accessible
次のようになっています:
attr_accessible :email, :firm_id, :name, :phone, :last_contact
次に、このコールバックがあります。
after_save :set_score
次に、これがset_score
メソッドです(簡潔にするために切り捨てられています):
private
def set_score
score = Score.find_or_create_by_user_id(:user_id => user.id)
client = self
firm = self.firm
days_since_last_contact = (Date.today - client.last_contact).to_i
score.update_attributes(:firm_size => self.firm_size, :days_since_last_contact => days_since_last_contact)
end
これは私が得るエラーです:
ActiveModel::MassAssignmentSecurity::Error in ClientsController#create
Can't mass-assign protected attributes: days_since_last_contact
app/models/client.rb:124:in `set_score'
app/controllers/clients_controller.rb:67:in `block in create'
app/controllers/clients_controller.rb:66:in `create'
line 124
上の行score.update_attributes...
です。
と呼ばれる保護された属性はありませんdays_since_last_contact
。それは、Date
計算の結果であるローカル変数です。
ここで何が起こっているのでしょうか?
編集1:
Score
の属性にアクセス可能なホワイトリスト:
attr_accessible :client_id, :days_since_contact....