Ruby on rails 将列值转换为字符串并以JSON显示

Ruby on rails 将列值转换为字符串并以JSON显示,ruby-on-rails,ruby,Ruby On Rails,Ruby,我创建了一个用户模型,如下所示: class User < ActiveRecord::Base self.table_name = 'User' end class用户

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

class User < ActiveRecord::Base

   self.table_name = 'User'

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

我想在json中以字符串形式显示状态值。当用户状态为0时,则在其状态为1时显示inactive(不活动)和active(活动)

我怎样才能创建一个进行转换的方法

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


谢谢

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

def status_str
  case status
  when 0
    "active"
  when 1
    "archived"
  end
end
但是,更好的方法是使用:


要使这项工作正常,您的
status
列需要是整数数据类型,而不是布尔值。有关更多信息,请参阅

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

def status_str
  case status
  when 0
    "active"
  when 1
    "archived"
  end
end
但是,更好的方法是使用:


要使这项工作正常,您的
status
列需要是整数数据类型,而不是布尔值。有关更多信息,请参阅

self.table\u name='User'
-这同时违反了一些约定:请告诉我我做错了什么?我是ruby on Railsure的新手。首先,按照惯例,表名应该是模型名的复数形式,Rails会自动识别(只有当表名不符合上述要求时,才需要
self.table\u name
)。因此,为了遵循惯例,您的表名应该被称为
users
(小写,复数),然后您可以删除
self.table\u name
。尽管如此,还是建议您将表名命名为
users
,而不是
User
。这是Rails的惯例,将为您省去很多麻烦。当然,如果您出于某种原因无法控制您的模式,或者您正在构建一个遗留应用程序,那么像您这样设置表名是一个可以接受的解决方法。
self.table\u name='User'
-这立刻违反了一些约定:DCan您能告诉我我我做错了什么吗?我是ruby on Railsure的新手。首先,按照惯例,表名应该是模型名的复数形式,Rails会自动识别(只有当表名不符合上述要求时,才需要
self.table\u name
)。因此,为了遵循惯例,您的表名应该被称为
users
(小写,复数),然后您可以删除
self.table\u name
。尽管如此,还是建议您将表名命名为
users
,而不是
User
。这是Rails的惯例,将为您省去很多麻烦。当然,如果您出于某种原因无法控制您的模式,或者您正在构建一个遗留应用程序,那么像您所做的那样设置table_名称是可以接受的解决方法。