Ruby on rails 如何使用jsonapi资源ruby gem重命名资源的属性

Ruby on rails 如何使用jsonapi资源ruby gem重命名资源的属性,ruby-on-rails,ruby,jsonapi-resources,Ruby On Rails,Ruby,Jsonapi Resources,我正在使用gem用rails构建jsonapi。图书馆真的很棒,它做了很多工作 然而,我们数据库中的一些列名在API中显示并不真正有意义 所以,我的问题是:是否可以在资源中重命名属性/属性 例如: 假设我有一个属性为login的模型用户 class User < ActiveRecord::Base attr_accessor :login end 谢谢 我认为您需要使用alias或alias\u方法 通常,更改属性名称或值的最简单方法是重新定义属性。在您的情况下,它将是: attr

我正在使用gem用rails构建jsonapi。图书馆真的很棒,它做了很多工作

然而,我们数据库中的一些列名在API中显示并不真正有意义

所以,我的问题是:是否可以在资源中重命名属性/属性

例如:

假设我有一个属性为
login
的模型用户

class User < ActiveRecord::Base
  attr_accessor :login
end

谢谢

我认为您需要使用alias或alias\u方法

通常,更改属性名称或值的最简单方法是重新定义属性。在您的情况下,它将是:

attributes :username

def username
  @model.login
end

在自述文件中:

为您的
:login
属性设置
:username

class User < ActiveRecord::Base
  attr_accessor :login

  alias_attribute :username, :login
end

通过设置别名,您已将
用户名
属性映射到
登录
属性,因此无论您使用
用户名
还是
登录
,它都将返回相同的值。

为属性设置别名是否有效?然后,如果您在JR中指定了
属性:username
,它应该从
:login
@Alexander中提取值。您能将您的答案放到答案中吗?它可以工作,而且似乎是其他别名中最好的选择,因为它也可以很好地用于搜索。当然!很高兴知道它起作用了。谢谢!这不是100%的纯解决方案(最好不要接触模型,只接触资源),但它仍然是其他别名选项中效果最好的,因为它不会破坏过滤(搜索)功能。谢谢谢谢但是,将无法正常工作的过滤(搜索)感谢回复!
class User < ActiveRecord::Base
  attr_accessor :login

  alias_attribute :username, :login
end
class UserResource < JSONAPI::Resource
  attribute :username
end