簡體   English   中英

上下文相關的JSON響應

[英]Context-Sensitive JSON Response

我正在創建一個由RESTful json控制器組成的Rails 3后端。 例如,控制器看起來像這樣:

respond_to :json

def index
  ...
  respond_with resources
end

...

這由客戶端上的jQuery使用。 一切都很好。

我的下一步是控制JSON,以便根據上下文不對某些屬性進行序列化。 例如,資源所有者比僅具有讀訪問權的人獲得更多的屬性下傳。

目前,我傾向於使用Draper,並根據用戶的角色為每個模型使用單獨的裝飾器。

我的問題是,這會產生很多樣板。 我目前也在使用cancan進行基於角色的授權。

誰能建議一種更好的方法來實現這一目標?

我建議使用ActiveModel :: Serializer。 參見https://github.com/josevalim/active_model_serializers

為要公開的每個資源創建一個序列化器。 然后,您可以為每個模型分離序列化邏輯,輕松地公開其他方法,並根據角色確定每個模型的范圍。 與CanCan搭配使用效果很好。

我喜歡這種語法,例如:

class MonkeySerializer < ActiveModel::Serializer
  attributes :name, :mom, :weight

  private

  # use this for a custom attribute not on the model
  def weight
    monkey.weight_in_pounds
  end    
end 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM