【问题标题】:Setting value in database as False dependent on a different value else True/False将数据库中的值设置为 False 取决于不同的值,否则为 True/False
【发布时间】:2016-05-03 01:57:15
【问题描述】:

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

item.rbauction.rb 具有 belongs_to 关系。拍卖实例可以是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.manual_close 应该== false 如果item.online_only? == true 然后item.manual_close 可以是真或假。

一些rails c输出:

a = 拍卖,i = 物品。 json 部分是正确的,但是当我执行 item.manual_close 时,它应该是 false 而不是 true。

任何帮助将不胜感激。

【问题讨论】:

  • 请贴出online_only?方法的代码。
  • @Pavan 添加在上面
  • 您的代码不会触发数据库中的任何更改以将manual_close 值设置为true/false

标签: mysql ruby-on-rails ruby


【解决方案1】:

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

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

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

i.update(manual_close: i.manual_close?)

我建议从您的Auction 模型上的after_save 回调调用此行。这样,每次拍卖模型更新时,物品模型都会正确反映它需要的状态。

【讨论】:

  • 谢谢我最终做了类似的事情。我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 2021-02-21
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
相关资源
最近更新 更多