是否可以使用范围方法生成SQL“OR”子句?

时间:2012-07-12 00:22:01

标签: 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)?

1 个答案:

答案 0 :(得分:1)

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