如何将一个模型的整数属性映射到一个字符串?[英] How to map a model's integer attribute to a string?

本文是小编为大家收集整理的关于如何将一个模型的整数属性映射到一个字符串?的处理方法,想解了如何将一个模型的整数属性映射到一个字符串?的问题怎么解决?如何将一个模型的整数属性映射到一个字符串?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我的数据库中有一个 Hotels 表,其中一列是 :status (integer).我希望将这些整数转换为字符串,所以 1 = "Awaiting Contract"、2 = "Designing" 等等...

我在 Stack 中搜索了一些答案,但缺乏答案让我觉得我是从错误的角度来解决这个问题的?我曾经在提取数据时在 PHP 中执行此操作.Rails 的新手,因此非常感谢任何帮助或最佳实践建议.

推荐答案

检查 ActiveRecord 的 enum - 文档.

在这里你可以配置你的 :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

此外,装饰器是您应该研究特定于视图的方法.

本文地址:https://www.itbaoku.cn/post/1763998.html