簡體   English   中英

將數據庫中的值設置為False取決於其他值,否則為True / False

[英]Setting value in database as False dependent on a different value else True/False

我試圖使用三元運算符設置MySQL數據庫中屬性的值,該運算符取決於同一模型中可用的另一個變量/值。

item.rbbelongs_to關系auction.rb 拍賣的實例可以是online_only也可以不是online_only 我試圖在一個名為manual_close的項目實例上設置一個屬性,該屬性取決於拍賣是否為online_only

所以我有以下內容:

item.rb的:

def as_json(**options)
  json = {
    "manual_close" => self.manual_close?
  }
end

def manual_close?
  !online_only? false : self.manual_close
end

def online_only?
  auction && auction.online_only?
end

說那個item.online_only? == false item.online_only? == false那么item.manual_close應該== false如果item.online_only? == true item.online_only? == true那么item.manual_close可以為true或false。

一些rails c輸出:

在此處輸入圖片說明

a =拍賣,i =物品。 json部分是正確的,但是當我執行item.manual_close它應該為false而不是true。

任何幫助將非常感激。

我認為這里的問題是您沒有更新數據庫中的模型。

定義一個名為manual_close?的方法manual_close? 只會覆蓋方法manual_close? (帶有問號),並且不會影響數據庫中的manual_close屬性。

您將必須在數據庫中顯式更新manual_close以獲得所需的結果。

i.update(manual_close: i.manual_close?)

我建議您從Auction模型上的after_save回調中調用此行。 這樣,每次拍賣模型更新時,項目模型將正確反映其所需的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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