相关疑难解决方法(0)

Rails 4 LIKE查询 - ActiveRecord添加引号

我想尝试做类似的查询

def self.search(search, page = 1 )
  paginate :per_page => 5, :page => page,
    :conditions => ["name LIKE '%?%' OR postal_code like '%?%'", search, search],   order => 'name'
end
Run Code Online (Sandbox Code Playgroud)

但是当它运行时,有些东西正在添加引号,这会导致sql语句如此出现

SELECT COUNT(*)
FROM "schools" 
WHERE (name LIKE '%'havard'%' OR postal_code like '%'havard'%')):
Run Code Online (Sandbox Code Playgroud)

所以你可以看到我的问题.我正在使用Rails 4和Postgres 9这两个我从未使用过的,所以不确定它是否是一个活跃的记录或者可能是一个postgres的东西.

我该如何设置它以便我'%my_search%'最终在查询中喜欢?

ruby sql postgresql activerecord ruby-on-rails

120
推荐指数
6
解决办法
12万
查看次数

如何在Arel和Rails中进行LIKE查询?

我想做的事情如下:

SELECT * FROM USER WHERE NAME LIKE '%Smith%';
Run Code Online (Sandbox Code Playgroud)

我在Arel的尝试:

# params[:query] = 'Smith'
User.where("name like '%?%'", params[:query]).to_sql
Run Code Online (Sandbox Code Playgroud)

但是,这变为:

SELECT * FROM USER WHERE NAME LIKE '%'Smith'%';
Run Code Online (Sandbox Code Playgroud)

Arel正确地包装查询字符串'Smith',但因为这是一个LIKE语句,所以它不起作用.

如何在Arel中进行LIKE查询?

PS奖金 - 我其实是想扫描桌子上两个字段,这两个名称和说明,看是否有查询的任意匹配.那会怎么样?

activerecord ruby-on-rails arel

111
推荐指数
2
解决办法
9万
查看次数

在轨道上的ruby中的SQL Like运算符

我有一个任务是选择搜索学生那些名字以param值和所选值的城市开头.我怎么能在轨道上设置ruby?我确实喜欢这个,但这不是控制器

 def list

    studentcount=Student.count()
    puts studentcount
    @studentname = Student.where("name name1 AND city = :cityId1",
    {:name1 => params[:name], :cityId1 => params[:cityId]})

    puts 'studentname'
    puts @studentname.inspect
    @students = Student.limit(params[:jtPageSize]).offset(params[:jtStartIndex]).order(params[:jtSorting])

    @jtable = {'Result' => 'OK','Records' => @students.map(&:attributes), :TotalRecordCount => studentcount}

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json => @jtable}
    end
  end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails-3.2

9
推荐指数
2
解决办法
2万
查看次数

Ruby on Rails 2.3 SQL LIKE查询

我能够在Rails 2.3中进行LIKE查询的唯一方法如下:

access_points.all(:conditions => "mac_address LIKE '%#{@q}%'")
Run Code Online (Sandbox Code Playgroud)

官方文档说这样做是不安全的,因为受SQL注入:

将自己的条件构建为纯字符串可能会使您容易受到SQL注入攻击.例如,Client.first(:conditions =>"name LIKE'%#{params [:name]}%'")不安全.有关使用数组处理条件的首选方法,请参阅下一节. http://guides.rubyonrails.org/v2.3.8/active_record_querying.html

但不幸的是,它没有解释如何正确地进行LIKE查询,而且我无法在谷歌上找到它,因为LIKE是如此通用的关键字.

任何提示?我是Rails的新手,但我有Symfony和Django的经验.

ruby-on-rails

1
推荐指数
1
解决办法
3217
查看次数