ruby-on-rails 如何在Ruby on Rails中更新活动记录中的特定列?

xu3bshqb  于 2023-01-10  发布在  Ruby
关注(0)|答案(4)|浏览(261)

我有个模特叫“代理”

Agency活动记录中的一行如下所示:

#<Agency id: 1, name: "Hello", contact_person: "Abhimanyu", phone_number: "946159", email: "Abhimanyu@purple.com ", local_package: false, outstation: true, remarks: nil, status: 1>

这里我想把status的值改为0,怎么做呢?

sxissh06

sxissh061#

Ruby on Rails提供了许多方法来更新一个活动记录,你可以从this blog post中得到每个方法的不同之处。

agency = Agency.find(1)
  1. update
agency.update(status: 0)
  1. update_attribute
agency.update_attribute(:status, 0)
  1. update_column
agency.update_column(:status, 0)
  1. update_columns
agency.update_columns(status: 0)
ymdaylpp

ymdaylpp2#

您还可以使用此
第一个月

pkln4tw6

pkln4tw63#

您需要update_column方法。请尝试以下操作:

agency = Agency.find(1)
agency.update_column(:status, 0)

您应该花一些时间阅读Ruby on Rails Guides

krcsximq

krcsximq4#

要更新,您可以用途:

agency.update_column(:status, 0)

但是update_column将忽略模型上可能存在的所有验证
如果您不想忽略模型验证,我建议您用途:

agency.update status: 0

update_attributes方法在rails 6(https://blog.saeloun.com/2019/04/15/rails-6-deprecates-update-attributes.html)上已弃用
要查找要更新的记录,可以使用.find.where方法。如果可以按ID查找,请用途:

agency = Agency.find(1)

如果需要按其他字段查找,请使用.where

agency = Agency.where(email: 'Abhimanyu@purple.com').first

使用.first是因为.where将返回一个包含对象的Array,您需要选择其中的一个对象。如果您想要的对象不是第一个对象,则可以使用.last

相关问题