可以向可链接查询添加选项吗?
Possible to add options to a chainable query?
我正在将 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
这是可行的还是我需要用不同的方法构建单独的完整查询?
谢谢。
您可以像这样以编程方式建立条件:
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
我正在将 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
这是可行的还是我需要用不同的方法构建单独的完整查询?
谢谢。
您可以像这样以编程方式建立条件:
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