[英]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.