2017-04-03 85 views
0

我試圖從我的InventoryPart數據庫中選擇部件號和公司唯一的部件。我這樣做:ActiveRecord Rails 4 Chaining .select查詢

parts = InventoryPart.select('DISTINCT ON (part_num, company_id) *') 

但畢竟這我想鏈上的另一個選擇,這樣我就可以得到,它們與以前的AR關係中的獨特零件號的集合:

parts.select("distinct part_num") 

但是,這一切都爲回報每一位InventoryPart.all

有沒有辦法鏈select方法?

回答

1

您可以在select絕對鏈:

Foo.select('count(some_col) as some_col_count').select('1 as one') 

這將返回兩列指定的信息。

由於您試圖將SQL文字與Arel(以及ActiveRecord)用於組裝SQL查詢的AST組合起來,因此您遇到了問題。相反,你可能會想嘗試這樣的:如果你想使用DISTINCT_ON

InventoryPart.select(:part_num, :company_id).distinct 

,你可以這樣做:

table = InventoryPart.arel_table 
unique_parts = InventoryPart.select(:part_num).distinct_on([table[:part_num], table[:company_id]) 
InventoryPart.find_by_sql(unique_parts.to_sql)