关于heroku:Ruby on Rails:更新属性

Ruby on Rails: Update Attribute

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

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

Record.update_attribute(:roles_mask,"1")

其中记录是正确的记录。

'undefined method 'update attribute''

我不能只输入Record.roles_mask = 1吗?

编辑。

我使用了Record,但在示例中我不应该这样做。我所做的正是这样:

1
2
3
4
5
ian = User.where(:id => '5')

ian.update_attribute(:roles_mask, '1')

Error: undefined method 'update_attributes'


问题是使用.where函数创建关系,而不是查找记录本身。执行此操作:

1
2
ian = User.find(5)
ian.update_attribute(:roles_mask, '1')

或者如果您想使用.where,则可以执行以下操作:

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