'delivery_types'表有以下模型:
class DeliveryType < ActiveRecord::Base
end
我想确定一种特殊的传递类型,例如“DELIVERY_BY_TIME”,我希望这个const返回DeliveryType.first(我稍后会在我的表中提供有关此类型的信息)。可能吗?我该怎么做?谢谢。
答案 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反模式”,则不鼓励您为“状态”字段创建单独的类。他们建议在父对象中使用一个字符串,并使用一些限制值列表的验证器...