Ruby on Rails: Update Attribute
Google现在严重让我失望。我需要做的就是从Heroku rails控制台更新一个属性,将用户设置为admin。
我找不到一个简单的答案。我一直在尝试的是:
其中记录是正确的记录。
'undefined method 'update attribute''
我不能只输入
编辑。
我使用了Record,但在示例中我不应该这样做。我所做的正是这样:
1 2 3 4 5 | ian = User.where(:id => '5') ian.update_attribute(:roles_mask, '1') Error: undefined method 'update_attributes' |
问题是使用
1 2 | ian = User.find(5) ian.update_attribute(:roles_mask, '1') |
或者如果您想使用
1 2 | ian = User.where(:id => 5) ian.first.update_attribute(:roles_mask, '1') |
编辑
有关此原因的详细信息,请参见此答案。
要使用update_attribute(或update_attributes),您需要从实例而不是类中调用它。
1 2 3 | rails c> rec = Record.find(1) rails c> rec.update_attribute(:att, 'value') rails c> rec.update_attributes(att: 'value', att2: 'value2') |
我认为这应该解决您的问题。
Where子句返回一个数组,而您试图对数组进行更新查询,这就是为什么会出错。
您应该尝试找出第一条记录
1 2 3 4 5 | ian = User.where(:id => 1).first or ian = User.find(1) or ian = User.find_by_id(1) |
现在您的更新查询将可用。
1 | ian.update_attribute(:roles_mask, '1') |