我正在尝试使用三元运算符在MySQL数据库中设置属性值,该运算符依赖于同一模型中可用的另一个变量/值。
item.rb
与belongs_to
的关系auction.rb
。拍卖的实例可以是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.manual_close
== false
那么item.online_only? == true
那么item.manual_close
,那么rails c
可以是真或假。
item.manual_close
输出: a =拍卖,i =物品。 json部分是正确的但是当我做Dictionary<MyEnum, object>
时它应该是假的而不是真的。
非常感谢任何帮助。
答案 0 :(得分:2)
我认为这里的问题是您没有在数据库中更新模型。
定义名为manual_close?
的方法只会覆盖方法manual_close?
(带问号),不会影响数据库中的manual_close
属性。
您必须在数据库中明确更新manual_close
才能获得所需的结果。
i.update(manual_close: i.manual_close?)
我建议您在after_save
型号的Auction
回调中拨打此一行。这样,每次更新拍卖模型时,项目模型都将正确反映其所需的状态。