sql - 是否可以使用范围方法生成 SQL `OR` 子句?

标签 sql ruby-on-rails ruby ruby-on-rails-3 squeel

我正在使用 Ruby on Rails 3.2.2 和 Squeel gem。我想知道是否有一种方法可以使用多个范围方法,以便使用与这些范围方法 SQL 条件相关的 OR 子句生成 SQL 查询。也就是说,我有:

class Article < ActiveRecord::Base
  def self.scope_method_1
    ... # scope_method_1 SQL conditions
  end

  def self.scope_method_2
    ... # scope_method_2 SQL conditions
  end

  def self.scope_method_combination
    # I am looking for something like
    #
    # where{scope_method_1 | scope_method_2} # Note: The '|' means the SQL 'OR' clause in the Squeel context
    #
    # so to generate the following SQL query:
    #
    # SELECT FROM articles WHERE <scope_method_1 SQL conditions> OR <scope_method_2 SQL conditions>
  end
end

是否可以使用范围方法生成 SQL OR 子句(通过使用或不使用 Squeel gem)?

最佳答案

我们一直在 squeel issue tracker 上讨论这个问题基本答案似乎是否定的。至少没有范围;但如果您将范围转换为筛选器,则可以。

关于sql - 是否可以使用范围方法生成 SQL `OR` 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11443448/

相关文章:

mysql - 来自多个数据库的 Rails 5 HABTM 在 mysql 命令中工作,但在 Rails 中出错

ruby - 帮助 Ruby FFI

mysql - 检查表中已有值的问题

mysql - SQL 将行转换为列,无需聚合或透视

sql - PostgreSQL 查询中每个月的最后三个月平均值

ruby - 如何使用 WebMock 在 Sinatra 应用程序中模拟 Paperclip 调用?

ruby - 正则表达式:从 CSS 文件中提取 CSS 样式

sql - 如何插入多行 - 需要一个循环?

ruby-on-rails - Kaminari:对可移动项目列表进行分页

ruby-on-rails - 为什么 ActiveRecord/PostgreSQL 在数据库中找不到我的数据?