如何确定某些模型类中的const?

时间:2013-12-25 07:05:19

标签: ruby-on-rails

'delivery_types'表有以下模型:

class DeliveryType < ActiveRecord::Base

end

我想确定一种特殊的传递类型,例如“DELIVERY_BY_TIME”,我希望这个const返回DeliveryType.first(我稍后会在我的表中提供有关此类型的信息)。可能吗?我该怎么做?谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你不能这样做,因为这不是“真正的常量”。你可以做的是创建一个名为“by_time”的类方法,它返回你的“by_time”对象。我也不会依赖这是你的“第一”对象。相反,我会使用“find_or_create_by_name(”BY_TIME“),它总是确保你提供正确的对象。结合,像

def self.by_time
  @@by_time||= find_or_create_by_name!(name: 'BY_TIME')
end
def by_time?
  self == DeliveryType.by_time
end

如果您阅读“Rails反模式”,则不鼓励您为“状态”字段创建单独的类。他们建议在父对象中使用一个字符串,并使用一些限制值列表的验证器...