2016-04-25 3 views
2

で特異なリソースを作成する(とRailsは4)、私は標準のショー、更新のためのURLにIDを供給していない(単数(またはシングルトン)リソースを作成しようとすることだし、私の場合は、現在の(ログインしている)ユーザーのプロフィールのため、私は 'GET/profiles /:id'ではなく 'GET/profiles'を行うことができます。jsonapi資源の宝石を使用してjsonapi資源

私はのconfig/routes.rbをファイルに特異ルートを追加しました:

jsonapi_resource:文書https://github.com/cerebris/jsonapi-resources#jsonapi_resource

あたりとしてプロファイル

それでは、どのように私は、リソース(ProfileResource)を変更しますidをcurrent_userに(コンテキストを介して)マップしますか?

既存のデモのアプリは、特異リソースを使用して実証していない、と(明示的に)この問題に対処することを任意のドキュメントがあるように思えません。あなたのプロフィールのリソースで

答えて

1

、あなたは鍵が「私」である場合、コンテキストに格納されているユーザーを経由してインスタンス化するself.find_by_keyメソッドをオーバーライドすることができます。 現在のユーザーの場合、/profiles/meを打つことができます。

def self.find_by_key(key, options = {}) 
    new(options[:context][:current_user], options[:context]) if key == 'me' 
end 
1

これは機能します。 (thks)

私のための鍵は

のconfig/routes.rbを

jsonapi_resource :profile 

アプリ/リソース/ profile_resource.rb

def self.find_by_key(key, options = {}) 
    model = options[:context][:current_user] 
    fail JSONAPI::Exceptions::RecordNotFound.new(key) if model.nil? 
    new(model, options[:context]) 
end 

してから(GETを打つ中でした、PUT、POST、DELETE) '/ profile'は正常に動作します。