gpt4 book ai didi

ruby-on-rails - 如何存储和比较 :symbols in an ActiveRecord (Ruby on Rails)

转载 作者:行者123 更新时间:2023-12-03 10:35:32 24 4
gpt4 key购买 nike

我认为使用常量填充 activeRecord 表中的状态字段会很好。但是,在检查此状态是否具有特定状态时,我遇到了麻烦。

如果我执行以下操作,

e = Mytable.new
e.status = :cancelled
e.save

然后重新查找记录并尝试将我的状态与符号进行比较,检查失败。我有一些来自控制台的输出来显示这一点。
irb(main):060:0> e.status.eql?("cancelled")
=> true
irb(main):061:0> e.status.eql?(:cancelled)
=> false
irb(main):062:0> e.status == :cancelled
=> false
irb(main):063:0> e.status == "cancelled"
=> true
irb(main):064:0> e.status == :cancelled.to_s
=> true

有没有更好的方法在记录中保持状态?有没有办法测试当前字段值是否等于 :symbol 而不将 :symbol 转换为字符串?我想可能有一个我不知道的运营商。

最佳答案

应生态的要求,这是我的评论作为答案:

ecoologic 为您提供了一个很好的解决方案,但我建议您不要这样做,并在其中创建一个带有常量的类。您可以执行诸如 e.status = Statuses::CANCELLED 之类的操作。在内部,这可能是一个字符串,这无关紧要。您仍在使用常量,如果该常量不存在,它会出错,这样更干净。

关于ruby-on-rails - 如何存储和比较 :symbols in an ActiveRecord (Ruby on Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com