rai*_*new 13 activerecord ruby-on-rails
在ActiveRecord中,我们如何在不担心/知道主键的情况下更新记录.
如果我做
Address.update(15, :user_name => 'Samuel')
Run Code Online (Sandbox Code Playgroud)
它对应于
UPDATE addresses set user_name = 'Samuel' where id = 15
Run Code Online (Sandbox Code Playgroud)
但是,如果我想做什么:
UPDATE addresses set user_name = 'Samuel' where cid = 15
Run Code Online (Sandbox Code Playgroud)
什么是ActiveRecord相当于那?
我试过了:
Address.update({:cid => 15}, :user_name => 'Samuel')
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
typ*_*ror 43
使用update_all类方法:
Address.where(:cid => 15).update_all(user_name : 'Samuel')
Run Code Online (Sandbox Code Playgroud)
http://apidock.com/rails/ActiveRecord/Relation/update_all
Fra*_*oto 16
a = Address.find_by_cid(15)
a.user_name = 'Samuel'
a.save
Run Code Online (Sandbox Code Playgroud)
为了澄清@typeoneerror的答案,只需使用update_allActiveRecord :: Relation对象而不是记录对象:
ModelName.where(:unique_id => x).update_all(:name => "x")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42756 次 |
| 最近记录: |