[英]Update a record in a table in rails
我有一個表A(:name,:flag),如果某個條件求值為true,則想更新表中記錄的標志列。
if A.find(300).flag == false
//Will this work -> A.find(300).flag = true
我應該在那一行寫什么?
if A.find(300).flag == false
//Will this work -> A.find(300).flag = true
改成
A.find(300).update(flag: true) if A.find(300).flag == false
您可以將方法添加到a.rb
def self.update_if_false id
find(id).update(flasg: true) if A.find(id).flag == false
end
然后您可以將其用作A.update_if_false(300)
如果flag為true,這將減少數據庫調用:
Rails 4:
obj = A.find(300)
obj.update(flag: true) unless obj.flag
Rails 3.2:
obj = A.find(300)
obj.update_attributes(flag: true) unless obj.flag
注意:將update
方法公開,並在活動記錄4中使用update_attributes作為別名。
是的..它將起作用...我在ruby2.0控制台中嘗試過.. 假設您具有所有存在的屬性....
2.0.0-p481 :026 > Image.find(30).title = true
Image Load (7.8ms) SELECT "images".* FROM "images" WHERE "images"."id" = $1 LIMIT 1 [["id", 30]]
=> true
您可以繼續添加更新語句..如果為true,否則為false。
if A.find(300).flag == false
##do something
else
##do other thing
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.