繁体   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