0

私の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....
4

1 に答える 1