可以为可链式查询添加选项吗?

时间:2015-02-11 19:15:11

标签: mysql ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2

我正在将Rails 3.2应用程序升级到Rails 4方法,因此之前的程序员在纯sql语句中使用options构建了一个查询,如下所示:

:conditions => 'a_table.an_attribute is NULL' + options

options是额外的纯SQL,可以进一步细化。

因此,当我将此转换为更新的方法时,我似乎无法使options的语法正确地正常工作:

self.joins(:tables1, :tables2).where(:something => :something_else).options

options将使用if语句设置。

if true
   options = where(:attribute1 => :an_attribute)
else
   options = where(:attribute2 => :a_differant_attribute)
end

这是可行的还是我需要在不同的方法中构建单独的完整查询?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过编程方式建立条件:

scope = joins(:tables1, :tables2).where(:something => :something_else)

if expression
  scope = scope.where(:attribute1 => :an_attribute)
else
  scope = scope.where(:attribute2 => :a_differant_attribute)
end