2017-04-03 107 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)