【问题标题】:Convert column values to string and display in JSON将列值转换为字符串并以 JSON 格式显示
【发布时间】:2017-07-11 12:23:52
【问题描述】:

我创建了一个用户模型如下:

class User < ActiveRecord::Base

   self.table_name = 'User'

end

用户表具有列状态,其值为 0 和 1

我想在 json 的字符串中显示状态值。当用户状态为 0 时显示为非活动状态,当其为 1 时显示为活动状态。

我怎样才能创建一个可以进行这种转换的方法?

我将在控制器中调用该方法并将结果保存在实例变量中并在视图中调用该实例变量。

谢谢

【问题讨论】:

  • self.table_name = 'User' - 这一次违反了一些约定:D
  • 你能告诉我我做错了什么吗?我是 ruby​​ on rails 的新手
  • 当然。首先,按照惯例,表名应该是模型名的复数形式,Rails 会自动识别它(只有当你的表名不符合上述规定时,你才需要self.table_name)。所以要遵守约定,你的表名应该叫users(小写,复数)然后你可以完全删除self.table_name
  • 同意,最好将您的表命名为users 而不是User。这是 Rails 约定,可以省去很多麻烦。当然,如果您由于某种原因无法控制架构,或者您正在构建旧版应用程序,那么像您所做的那样设置 table_name 是一种可以接受的解决方法。

标签: ruby-on-rails ruby


【解决方案1】:

一种方法是创建一个实例方法,该方法将返回您想要的字符串:

def status_str
  case status
  when 0
    "active"
  when 1
    "archived"
  end
end

但是更好的方法是使用ActiveRecord Enum

enum status: [ :active, :archived ]

要完成这项工作,您的status 列需要是整数数据类型,而不是布尔值。请参阅ActiveRecord Query Guide under Enums 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 2017-09-13
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2013-02-04
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多