2

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

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

所以,我的问题:可以重命名资源中的属性/属性吗?

例子:

假设我有带有属性的模型 User login

class User < ActiveRecord::Base
  attr_accessor :login
end

我希望login在 API 中显示为username,例如:

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

谢谢!

4

3 回答 3

2

我认为您需要使用别名或 alias_method。 http://blog.bigbinary.com/2012/01/08/alias-vs-alias-method.html

于 2016-01-07T16:16:14.373 回答
2

为您的属性设置:username 别名::login

class User < ActiveRecord::Base
  attr_accessor :login

  alias_attribute :username, :login
end

然后在JSONAPI::Resources(JR)中,您可以username像这样指定您的属性:

class UserResource < JSONAPI::Resource
  attribute :username
end

通过设置别名,您已将属性映射usernamelogin属性,因此无论您使用usernamelogin,它都会返回相同的值。

于 2016-01-07T18:09:31.643 回答
1

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

attributes :username

def username
  @model.login
end

它在自述文件中:https ://github.com/cerebris/jsonapi-resources#formatting

于 2016-01-07T16:30:21.387 回答