我目前用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也没有帮助。
答案 0 :(得分:0)
我想出了如何解决这个问题,但如果有人知道belongs_to的错误,我还是想解释一下。
将belongs_to更改为has_one有效并添加“user”:作为JSON root。