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