使用占位符使用select_all直接进行数据库查询

时间:2016-08-10 13:44:35

标签: ruby-on-rails

我需要使用select_all进行查询,如下所示:

exists( 
  [Sell To Customer].[Country Code].&[BE], 
  {[Sell To Customer].[Dim12 Name].&[FOOD]},  
  exists( 
    [Sell To Customer].[Country Code].&[NL], 
    {[Sell To Customer].[Dim12 Name]},  
    {} 
  ) 
)

这当然行不通。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

使用ActiveRecord时,您可以单独使用Arel,因为它仍然是ActiveRecord的依赖:

table = Arel::Table.new("your_table")
select = [:id, :name]
statuses = %w[active new]
end_date = nil
> puts table.project(*select).
   where(table[:status].in(statuses)).
   where(table[:end_date].eq(end_date)).to_sql

生成查询:

SELECT id, name FROM "your_table" WHERE "your_table"."status" IN ('active', 'new') AND "your_table"."end_date" IS NULL