ruby-on-rails – 如何存储和比较:ActiveRecord(Ruby on Rails)中的符号

我认为使用常量在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

有没有更好的方式在记录中持有地位?是否有一种方法来测试当前的字段值是否等于:符号而不将:符号转换为字符串?我在想,可能有一个我不知道的操作符。

根据生态学的要求,这里是我的评论作为答案:

生态学为您提供了一个很好的解决方案,但我建议您从此转向远程课程,并在其中添加常量。你可以像e.status = Statuses :: CANCELED这样做。在内部可能是一个字符串,没关系。你仍然使用常量,如果该常量不存在,它将会出错,而且这样更干净。

翻译自:https://stackoverflow.com/questions/9037758/how-to-store-and-compare-symbols-in-an-activerecord-ruby-on-rails

转载注明原文:ruby-on-rails – 如何存储和比较:ActiveRecord(Ruby on Rails)中的符号