使用where子句更新查询

时间:2013-09-25 17:46:13

标签: ruby-on-rails activerecord

非常简单的问题 - 我想只更新一个匹配2个参数的记录。

我应该这样做:

Model.where(:email =>"test@test.com",:code => "chejd").update(:password => "password").first

我找到了使用update_all的示例,但我只想更新最多1条记录。

2 个答案:

答案 0 :(得分:21)

检查这是否适用于您的DBMS和数据库适配器:

Model.where(conditions).limit(1).update_all(changes) # => 1

<强>更新

limit()update_all()组合是example in the docs,因此大多数数据库适配器可能都支持它。

答案 1 :(得分:0)

类似于以上答案。如果要更新第一条记录或最后一条记录,可以附加该记录并运行查询。

Model.where(conditions).first.update(changes)Model.where(conditions).last.update(changes)

first-获取按主键排序的第一条记录 last-获取按主键排序的最后一条记录