ruby-on-rails - 使用 ID 以外的参数查找模型

标签 ruby-on-rails ruby ruby-on-rails-4 active-directory strong-parameters

我正在使用具有强参数的 Rails 4 来尝试通过名为“provider_id”的参数查找用户。 希望我能够使用我的 API 调用 URL,例如:

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 的用户”

此外,有些相关:偶尔我会收到一条错误消息,提示“未找到参数:用户”。

有什么建议吗?谢谢!

最佳答案

改变:

@user = User.find(params[:provider_id])

收件人:

@user = User.find_by(:provider_id => params[:provider_id])

关于ruby-on-rails - 使用 ID 以外的参数查找模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119270/

相关文章:

ruby - 对哈希 : Ruby 中的值的操作

ruby-on-rails - 回形针视频上传

ruby-on-rails-4 - Ruby on Rails:.html_safe和sanitize()之间的区别

jquery - 如何在 jQuery 中调用 Rails 方法

ruby-on-rails - Ruby/Sinatra JSON.parse 失败

ruby - 如何找到 "essential"方法来提供 Ruby mixins 的接口(interface)?

ruby-on-rails - Rails postgres 错误:ActiveRecord::StatementInvalid 异常:PG::AmbiguousColumn:错误:列引用 "sample_id"不明确

ruby-on-rails - activeadmin的两个命名空间

javascript - 如何构建基于安全定时器的按钮?

ruby-on-rails - rails 7 : Change association of nested attributes