使用Ruby变量作为查询搜索用户

时间:2017-07-11 19:54:24

标签: ruby-on-rails ruby

我正在尝试在我的应用中制作简单的搜索功能。为此,用户将在页面“/ search / users / [query]”上搜索。参数设置正确,但我无法弄清楚如何设置它以便在数据库中搜索搜索词在其用户名中的所有用户。我觉得我差不多了,但它不起作用:

   def search_handler
        @query = params[:query]
        @type = params[:type]
        if @type == "users"
          @users = User.all.username.match(@query/i)
        end
    end

1 个答案:

答案 0 :(得分:2)

您可以尝试在params[:query] ActiveRecord语句中将LIKE传递给where SQL查询:

def search_handler
  @query = params[:query]
  @type  = params[:type]
  if @type == 'users'
    @users = User.where('username LIKE ?', "%#{@query}%")
  end
end

这将为您提供用户名与您已通过的@query值匹配的所有用户,从而生成如下SQL查询:

SELECT  "users".* FROM "users" WHERE (username LIKE '%blablabla%') LIMIT ?  [["LIMIT", 11]]

您可以查看ActiveRecord Query Methods以改进Rails中的查询。