相关疑难解决方法(0)

ActiveRecord OR查询

你如何在Rails 3 ActiveRecord中进行OR查询.我找到的所有示例都只有AND查询.

编辑:自Rails 5以来可以使用OR方法.请参阅ActiveRecord :: QueryMethods

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

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

Rails:如何使用OR而不是AND链接范围查询?

我正在使用Rails3,ActiveRecord

只是想知道如何用OR语句而不是AND来链接范围.

例如

Person.where(:name => "John").where(:lastname => "Smith")
Run Code Online (Sandbox Code Playgroud)

这通常会返回name ='John'和lastname ='Smith',但我想:

name ='John'或lastname ='Smith'

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

131
推荐指数
14
解决办法
10万
查看次数

Rails 5:ActiveRecord OR查询

你如何orRails 5 ActiveRecord中进行查询?此外,是否有可能链orwhere在ActiveRecord的查询?

ruby activerecord ruby-on-rails rails-activerecord ruby-on-rails-5

106
推荐指数
4
解决办法
4万
查看次数

将两个命名范围与OR组合(而不是AND)

我想找到所有Annotations身体都是:

  • 等于 "?"
  • 要么
  • 喜欢 "[?]"

最好的方法是什么?

我想尽可能使用SearchLogic,但是SearchLogic允许您执行以下各项操作:

  • Annotation.body_equals('?')
  • Annotation.body_like('[?]')

你总是可以将它们连在一起: Annotation.body_equals('?').body_like('[?]')

我不确定如何将它们结合起来OR.

请注意,如果命名范围与参数相同,OR 可以将它们组合在一起.我可以这样做:

 Annotation.body_equals_or_body_like('?')
Run Code Online (Sandbox Code Playgroud)

但这没有用.

请注意,我没有附加到SearchLogic,但对于不需要破坏其抽象的解决方案来说,它会很棒.

ruby-on-rails searchlogic

7
推荐指数
2
解决办法
5020
查看次数

在范围中使用OR与查询

在Rails3中我有:

Class Teacher
  #  active                 :boolean
  has_and_belongs_to_many :subjects

Class Subject
  #  active                 :boolean
  has_and_belongs_to_many :teachers
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个教师范围,它返回与之相关的所有Teachers内容active或与之相关联的Subject内容active.

这些范围单独工作,但如何将它们作为单个范围与OR组合?

scope :active_teachers, where(active: true)
scope :more_active_teachers, joins(:subjects).where(:subjects => {active: true})
Run Code Online (Sandbox Code Playgroud)

我试过这个没有成功:

scope :active_teachers, where(active: true).or(joins(:subjects)
      .where(:subjects => {active: true}))
Run Code Online (Sandbox Code Playgroud)

更新:

我以为我有一个解决方案,但这不再是懒惰的负载,两次点击数据库 - 最重要的是 - 返回一个数组而不是一个AR对象!

scope :active_teachers, where(active: true) |
                        joins(:subjects).where(:subjects => {active: true})
Run Code Online (Sandbox Code Playgroud)

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

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