2010-08-03 85 views
1

PostgreSQL的屬性我有一個簡單的聲明是這樣的:更新布爾從軌

@employee.update_attributes(:subscribed=>false) 

但這不是更新boolean列字段subscribed。它拋出一個警告說:

WARNING: Can't mass-assign these protected attributes: subscribed 

回答

3

我會建議使用#update_attribute,不#update_attributes。 #update_attribute(單數)接受兩個參數:屬性名稱和值。這是爲了翻轉布爾值,或更新單個值。 #update_attribute的語義也意味着回調不會被觸發。

從你的代碼,這是一個簡單的變化:

@employee.update_attribute(:subscribed, false) 

現在,爲什麼你的代碼失敗的真正原因是因爲你有你使用#attr_accessible或在您的員工的模型#attr_protected其中某處。使用#attr_accessible有助於防止注入攻擊,只允許某些字段從#attributes =(這是#update_attributes最終調用的內容)分配。警告來自#attributes =。

1

需要attr_accessible :subscribed> _ <