我有一个名为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
.我该怎么做?
Ruby on Rails提供了许多更新活动记录的方法。您可以从此博客文章中获取每种方法的差异。
agency = Agency.find(1)
更新
agency.update(status: 0)
update_attribute
agency.update_attribute(:status, 0)
update_column
agency.update_column(:status, 0)
update_columns
agency.update_columns(status: 0)
你也可以使用这个
Agency.find(1).update_column(:status, 0)
你需要update_column
方法。试试这个:
agency = Agency.find(1)
agency.update_column(:status, 0)
你应该花一些时间阅读Ruby on Rails指南。
要更新,您可以使用:
agency.update_column(:status, 0)
但是update_column将忽略您可能对模型进行的所有验证。
如果您不想忽略模型验证,我建议您使用:
agency.update status: 0
方法 update_attributes 在轨道 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
将返回一个包含对象的数组,您需要在其中选择一个对象。如果所需的对象不是第一个对象,则可以使用.last
。