[英]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.