我认为使用常量填充activeRecord表中的状态字段会很好。但是,在检查此状态是否具有特定状态时,我遇到了问题。如何存储和比较:ActiveRecord中的符号(Ruby on Rails)
如果我这样做,
e = Mytable.new
e.status = :cancelled
e.save
然后refind记录,并尝试和我的状态比作象征,检查失败。我有一些来自控制台的输出来显示。
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
是否有更好的方式来保存记录中的状态?有没有一种测试方法,如果当前字段值等于:符号而不将该符号转换为字符串?我在想可能有一位我不知道的运营商。
ecoologic有你一个很好的解决方案,但我会建议也许从这个转向远离,也许做一个类与它的常量。您可以执行诸如“e.status = Statuses :: CANCELLED”之类的操作。内部可以是一个字符串,并不重要。你仍然在使用常量,如果该常量不存在,它将会出错,并且它更干净。 – MrDanA 2012-01-27 18:24:28
你为什么不重写列的getter? – apneadiving 2012-01-27 18:35:07
在阅读这两条评论之前,我修改了我的答案,但我想说我喜欢@MrDanA解决方案,您应该写一个答案,我会为它投票! – ecoologic 2012-01-27 21:09:55