相关疑难解决方法(0)

如何在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 on Rails 3如何使'OR'条件

我需要一个SQL语句来检查是否满足一个条件:

SELECT * FROM my_table WHERE my_table.x=1 OR my_table.y=1
Run Code Online (Sandbox Code Playgroud)

我想以'Rails 3'的方式做到这一点.我在寻找类似的东西:

Account.where(:id => 1).or.where(:id => 2)
Run Code Online (Sandbox Code Playgroud)

我知道我总是可以回退到sql或条件字符串.但是,根据我的经验,这在组合范围时经常会导致混乱.做这个的最好方式是什么?

另一个相关的问题是,如何描述依赖于OR条件的关系.我找到的唯一方法:

has_many :my_thing, :class_name => "MyTable",  :finder_sql => 'SELECT my_tables.* ' + 'FROM my_tables ' +
'WHERE my_tables.payer_id = #{id} OR my_tables.payee_id = #{id}'
Run Code Online (Sandbox Code Playgroud)

然而,当组合使用时,这些再次破裂.有没有更好的方法来指定这个?

ruby ruby-on-rails ruby-on-rails-3

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