如何使用jsonapi-resources ruby​​ gem重命名资源的属性/属性

时间:2016-01-07 16:02:13

标签: ruby-on-rails ruby jsonapi-resources

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

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

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

示例:

我们说我的模型用户属性为login

class User < ActiveRecord::Base
  attr_accessor :login
end

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

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

谢谢!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

:username属性设置:login alias

class User < ActiveRecord::Base
  attr_accessor :login

  alias_attribute :username, :login
end

然后在JSONAPI::Resources(JR)中,您可以指定username属性,如下所示:

class UserResource < JSONAPI::Resource
  attribute :username
end

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

答案 2 :(得分:1)

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

scope.required

这是自述文件:https://github.com/cerebris/jsonapi-resources#formatting