[英]Setting value in database as False dependent on a different value else True/False
我試圖使用三元運算符設置MySQL數據庫中屬性的值,該運算符取決於同一模型中可用的另一個變量/值。
item.rb
有belongs_to
關系auction.rb
。 拍賣的實例可以是online_only
也可以不是online_only
。 我試圖在一個名為manual_close
的項目實例上設置一個屬性,該屬性取決於拍賣是否為online_only
。
所以我有以下內容:
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.