通過定義(例子1)中的相應模型類(即用戶模型)中的'as_json'方法的散列結構,其成爲json格式中的活動記錄(即,用戶)的默認散列結構。它不能被任何內聯的定義被重寫如實施例中所定義:2
實施例1:
class User < ActiveRecord::Base
.....
def as_json(options={})
super(only: [:id, :name, :email])
end
end
實施例:2
class UserController < ApplicationController
....
def create
user = User.new(params[:user])
user.save
render json: user.as_json(only: [:id, :name])
end
end
因此,在本實施例中,當創建動作被執行「用戶'則返回( 「只:[:ID,:姓名,:郵箱]」)格式而不是( 「只:[:ID,:名字]」)
所以,選擇= {}傳遞給as_json方法來爲d指定不同的格式不同的方法。
最佳實踐,是定義散列結構常數,並調用它everwhere它需要
對於實施例 例如:型號/ user.rb 這裏,常數以模型類中定義
class User < ActiveRecord::Base
...
...
DEFAULT_USER_FORMAT = { only: [:id, :name, :email] }
CUSTOM_USER_FORMAT = { only: [:id, :name] }
end
例如:控制器/ user.rb
class UserController < ApplicationController
...
def create
...
render json: user.as_json(User::DEFAULT_USER_FORMAT)
end
def edit
...
render json: user.as_json(User::CUSTOM_USER_FORMAT)
end
end
很酷!
您可以將變量傳遞給as_json:'{render json:@ patients.as_json(include_relation:true)}'並根據選項定義您自己的條件 – MrYoshiji
好的但我認爲在這裏我需要別的東西? –
我發佈了一個答案,這是一種混亂,但你明白了,不要猶豫,要求任何事情;) – MrYoshiji