我的数据库中有一个Hotels表,其中一列是:status
(integer
)。我希望将这些整数转换为字符串,因此1 = "Awaiting Contract"
,2 = "Designing"
等等......
我已经在Stack上搜索了一些答案,而缺少这些答案让我觉得我是从错误的角度来解决这个问题的?我以前在PHP中执行此操作同时提取数据。新的Rails,所以任何帮助或最佳实践建议将不胜感激。
答案 0 :(得分:10)
检查enum
- doc的ActiveRecord
。
您可以在此配置:status
:
class Hotel < ActiveRecord::Base
enum status: { waiting_contract: 1, designing: 2 }
def format_status
status.to_s.humanize
end
end
它会创建这样的方法:
hotel.waiting_contract?
hotel.designing?
hotel.waiting_contract!
hotel.format_status # => "Waiting contract"
希望有所帮助!
<强>更新强>
通过覆盖status
方法本身可以实现类似的功能,但建议使用单独的方法:
class Hotel < ActiveRecord::Base
enum status: { waiting_contract: 1, designing: 2 }
def status
super.to_s.humanize
end
end
此外,decorators是您应该查看特定于视图的方法的内容。
答案 1 :(得分:0)
这取决于你需要的清单。上述想法的替代方法是创建哈希。哈希是非常Ruby的,专为这种配对数据而设计。
创建哈希,(枚举输入是自动的。)
my_h = { "waiting" => 1, "design" => 2 }
然后访问
my_h["waiting"] = 1
你可以用哈希做更多的事情。这只是最简单的情况。
哈希可能满足或不满足您的需求,但它是一个出色的工具,带有一组很好的Ruby工作方法。