我找不到一个简单的答案。我一直在尝试的是:
Record.update_attribute(:roles_mask, "1")
记录是正确的记录。
'undefined method'更新属性''
我不能只输入Record.roles_mask = 1
?
EDIT。
我使用了Record,在示例中我不应该这样做。我所做的就是:
ian = User.where(:id => '5')
ian.update_attribute(:roles_mask, '1')
Error: undefined method 'update_attributes'
答案 0 :(得分:5)
问题是使用.where
函数会创建关系,而不是查找记录本身。这样做:
ian = User.find(5)
ian.update_attribute(:roles_mask, '1')
或者如果您想使用.where
,那么您可以这样做:
ian = User.where(:id => 5)
ian.first.update_attribute(:roles_mask, '1')
修改
有关发生这种情况的详细信息,请参阅this answer。
答案 1 :(得分:3)
要使用update_attribute(或update_attributes),您需要从实例而不是类调用它。
rails c> rec = Record.find(1)
rails c> rec.update_attribute(:att, 'value')
rails c> rec.update_attributes(att: 'value', att2: 'value2')
我认为应该照顾好你的问题。
答案 2 :(得分:1)
Where子句返回一个数组,并且您正在尝试对数组进行更新查询,这就是您遇到错误的原因。
你应该试着找出第一条记录
ian = User.where(:id => 1).first
or
ian = User.find(1)
or
ian = User.find_by_id(1)
现在您的更新查询将有效。
ian.update_attribute(:roles_mask, '1')