如何将模型的整数属性映射到字符串?

我的数据库中有一个Hotels表,其中一列是:statusinteger )。 我想将这些整数转换成字符串,所以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工作方法。

http://ruby-doc.org/core-2.2.0/Hash.html