我有一个名为代理商
的模型代理商有效记录中的一行如下所示:
#<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
。我怎么能这样做?
答案 0 :(得分:2)
您也可以使用此
Agency.find(1).update_column(:status, 0)
答案 1 :(得分:1)
Rails提供了许多更新activerecord的方法。您可以从此blog
中获得每种方法的差异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)
答案 2 :(得分:0)
您需要update_column
方法。试试这个:
agency = Agency.find(1)
agency.update_column(:status, 0)
你应该花些时间阅读RubyonRails Guide
答案 3 :(得分:0)
要更新,您可以使用:
agency.update_column(:status, 0)
但是update_column 将忽略您可能对模型进行的所有验证。
如果您不想忽略模型验证,建议您使用:
agency.update status: 0
在rails 6(https://blog.saeloun.com/2019/04/15/rails-6-deprecates-update-attributes.html)上不赞成使用update_attributes方法
要查找要更新的记录,可以使用.find
或.where
方法。如果可以通过ID查找,请使用:
agency = Agency.find(1)
如果需要按其他字段查找,请使用.where
:
agency = Agency.where(email: 'Abhimanyu@purple.com').first
之所以使用.first
,是因为.where
将返回一个包含对象的数组,您需要在其中选择一个对象。如果您想要的对象不是第一个对象,则可以使用.last
。