2012-09-07 26 views
0

這個問題有幾個相關的問題。但是沒有一個答案能夠解決我的情況。爲什麼我的列處於我的attr_accessible列表中時發生了質量分配錯誤

我在嘗試創建新策略時在本地主機上收到此錯誤。

Can't mass-assign protected attributes: starts_on 

在我policy.rb模型雖然我有這樣的:

class Policy < ActiveRecord::Base 

belongs_to :policy_type 

attr_accessible :starts_on, 
       :ends_on, 
       :i_agree_privacy_policy, 
       :license, 
       . 
       . 
       .etc... 

validates:starts_on, :presence => true 

def self.init(user, policy_type, load_user_profile = true) 
    attributes = { 
     :user => user, 
     :policy_type => policy_type, 
     :starts_on => Date.today 
    } 
    policy_type.policy_class.constantize.new(attributes) 
end 

etc... 
end 

形式是保險如此龐大,但它也不會在這裏很重要,因爲我與Date.today這裏創建starts_on 。真的很難過,在過去的幾天裏我花了幾個小時的時間來弄清楚爲什麼會發生這種情況。

+0

我很好奇你爲什麼不在policy_type.policy_class.constantize.new(attributes)處使用'Policy.new attributes'。什麼是policy_class返回? –

+0

我沒寫這行。但是policy_class是policy_types表中的一列,它包含一個字符串。我試圖重構整個項目,其中包括更改策略表。但是這個列'starts_on'在舊錶中。並且我沒有觸及policy_types表 – Ryan

+0

字段'starts_on'是什麼類型的? – Eru

回答

0

您可能會在policy_type.policy_class解決的實際類中收到「Can not mass assign」錯誤,而不是Policy

我會檢查任何類policy_type.policy_class指向,並嘗試添加starts_onattr_accessible那裏。

相關問題