将数据库中的值设置为False,具体取决于其他值,否则为True / False

时间:2016-05-02 17:33:05

标签: mysql ruby-on-rails ruby

我正在尝试使用三元运算符在MySQL数据库中设置属性值,该运算符依赖于同一模型中可用的另一个变量/值。

item.rbbelongs_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.rb的:

item.online_only? == false

如果item.manual_close == false那么item.online_only? == true那么item.manual_close,那么rails c可以是真或假。

一些item.manual_close输出:

enter image description here

a =拍卖,i =物品。 json部分是正确的但是当我做Dictionary<MyEnum, object>时它应该是假的而不是真的。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我认为这里的问题是您没有在数据库中更新模型。

定义名为manual_close?的方法只会覆盖方法manual_close?(带问号),不会影响数据库中的manual_close属性。

您必须在数据库中明确更新manual_close才能获得所需的结果。

i.update(manual_close: i.manual_close?)

我建议您在after_save型号的Auction回调中拨打此一行。这样,每次更新拍卖模型时,项目模型都将正确反映其所需的状态。