2014-10-10 34 views
1

我目前使用Rails編寫了一個API。在觀看關於ActiveModel :: Serializer的RailsCast之後,我想嘗試一下。ActiveModel :: Serializer中的Belongs_to關聯從JSON中移除根

簡短地回顧了我目前的車型:

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 ::串行頁我實現了UserSerializer如下的例子:

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

這確實添加了「用戶」:作爲根到我的JSON fo RMAT。此外,該示例顯示向串行器添加

belongs_to :club 

。但是,如果我添加belongs_to,我不會得到「用戶」:作爲我的JSON的根。這是預期的行爲?有沒有辦法改變這個? 經過附加測試後,似乎「user」:root元素是隨機的--did沒有找到尚未添加或省略的模式。

我試圖

root: true 

添加到我的users_controller這沒有幫助。

+1

你有沒有嘗試在'User'模型中使用'self.include_root_in_json = true'? – 2014-10-10 13:53:06

+0

是的,這是有效的。但我仍然想解決問題根源的錯誤。由於串行器應該具有一致的行爲並且不會隨機更改。謝謝! – Deutro 2014-10-10 14:06:40

回答

0

我想出瞭如何解決這個問題,但是如果有人知道belongs_to出了什麼問題,我仍然想解釋一下。

將belongs_to更改爲has_one,並將「user」添加爲JSON根。

相關問題