ActiveModel :: Serializer中的Belongs_to关联从JSON中删除root

时间:2014-10-10 12:48:14

标签: ruby-on-rails json ruby-on-rails-4 serialization

我目前用Rails编写API。在看了关于ActiveModel :: Serializer的RailsCast后,我想尝试一下。

对我当前型号的简短概述:

class Club < ActiveRecord::Base
   has_many :users
end

class User < ActiveRecord::Base
   validates :userName, presence: true
   belongs_to :club
end

创建用户将返回以下JSON:

{"id":1,"userName":"Test","firstName":"Test","lastName":"Test","created_at":"2014-10-     10T12:42:12.186Z","updated_at":"2014-10-10T12:42:12.186Z","city":"Test","street":"Test","mail":"Test","club_id":1}

在ActiveModel :: Serializer页面的示例中,我实现了UserSerializer,如下所示:

class UserSerializer < ActiveModel::Serializer
  attributes :id, :userName, :firstName, :lastName, :mail, :street, :city, :club_id
end

这会添加&#34; user&#34;:作为我的JSON格式的root用户。此外,示例显示添加

belongs_to :club

到Serializer。但是如果我添加belongs_to,我就不会得到&#34; user&#34;:作为我的JSON的root用户。这是预期的行为吗?有没有办法改变这个? 在进行了额外的测试后,似乎&#34; user&#34;:root元素是随机的,并且找不到添加或省略的模式。

我尝试添加

root: true

到我的users_controller也没有帮助。

1 个答案:

答案 0 :(得分:0)

我想出了如何解决这个问题,但如果有人知道belongs_to的错误,我还是想解释一下。

将belongs_to更改为has_one有效并添加“user”:作为JSON root。