我使用帶有強參數的Rails 4嘗試通過名爲「provider_id」的參數來查找用戶。 希望的是,我就可以讓我的API調用一個網址,如:查找ID爲非參數的模型
url.com/api/v1/user?provider=facebook?provider_id=12345
我的路線如下:的routes.rb
namespace :api do
namespace :v1 do
resources :users
match '/:provider/:provider_id', to: 'users#find_by_provider', via: 'get'
end
end
我堅強的參數是:
def user_params
params.require(:user).permit(:name, :age, :location, :provider, :provider_id) if params[:user]
end
我的功能是:
def find_by_provider
@user = User.find(params[:provider_id])
respond_to do |format|
format.json { render json: @user }
end
end
目前,我與測試: url.com/api/v1/facebook/12345 和它返回:
"{"provider"=>"facebook",
"provider_id"=>"12345"}"
這是很好的!但我現在得到的錯誤:「找不到用戶id = 12345」
此外,有點相關:偶爾我會收到一個錯誤,說「param not found:user」。
有什麼建議嗎?謝謝!
這和盧克的回答有什麼不同? – eightonrose
@eightonrose這將返回您正在查詢的單個Activerecord對象,而Luke的答案返回一個關係對象,這就是爲什麼他需要調用'take'來從關係中檢索第一個項目 – bjhaid
比這更快嗎? – Luke