簡體   English   中英

更新Rails表中的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM