Ruby on rails 如何将此SQL正确转换为ActiveRecord?

Ruby on rails 如何将此SQL正确转换为ActiveRecord?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我想选择属于某个产品的项目。它们在项上必须是不同的。条件。问题是: SELECT DISTINCT ON (items.condition) items.id, items.condition, items.price, products.name FROM products INNER JOIN items ON products.id = items.product_id WHERE products.id = 1 ORDER BY items.condition, items.price,

我想选择属于某个产品的
项目
。它们在
项上必须是不同的。条件
。问题是:

SELECT DISTINCT ON (items.condition) items.id, items.condition, items.price, products.name
FROM products
INNER JOIN items ON products.id = items.product_id
WHERE products.id = 1
ORDER BY items.condition, items.price, products.name;
我尝试了这个,但是我得到了
语句invalid
错误。我使用的是Rails 4

product = Product.find(1)
product.items.select("DISTINCT ON(items.condition) items.id, products.*, items.*").order('items.condition, items.price, products.name')
错误:

PG::Error: ERROR:  missing FROM-clause entry for table "products"
LINE 1: SELECT DISTINCT ON(items.condition) items.id, products.*, it...
                                                      ^
: SELECT DISTINCT ON(items.condition) items.id, products.*, items.* FROM "items"  WHERE "items"."product_id" = $1  ORDER BY items.condition, items.price, products.name
ActiveRecord::StatementInvalid: PG::Error: ERROR:  missing FROM-clause entry for table "products"
LINE 1: SELECT DISTINCT ON(items.condition) items.id, products.*, it...
试试这个(未测试)


谢谢但它使用产品类。我需要一个单一的产品。所以类似于
Product.find(1).joins…
?的东西将不起作用,因为不能对产品对象调用联接。试试相反的方法<代码>Product.joins()。查找(1)确定。谢谢有没有办法将其转换为实例方法?因此,我们可以在
产品
的实例上调用它,而不是调用
产品
Product.joins(:items).select("DISTINCT(items.condition), items.id, products.*").order('items.condition, items.price, products.name')