Ruby on Rails:更新属性

时间:2014-03-10 18:17:24

标签: ruby-on-rails heroku rails-console

谷歌现在严重失败了。我需要做的就是从Heroku rails控制台更新一个属性,将用户设置为admin。

我找不到一个简单的答案。我一直在尝试的是:

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'

3 个答案:

答案 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')