我使用带有强参数的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