2010-08-03 71 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> _ <