2015-02-10 80 views
0

我有一个非常简单的数据库模型集,通过链接器表实现多对多关联。加入has_many:通过属性

class Product < ActiveRecord::Base 
    has_many :store_products 
    has_many :stores, through: store_products 
end 

class StoreProduct < ActiveRecord::Base 
    belongs_to :store 
    belongs_to :product 

    validates :price, presence: true 
end 

class Store < ActiveRecord::Base 
    has_many :store_products 
    has_many :products, through: :store_product 
end 

所以很多商店可以销售很多产品,并可以以不同的价格出售它们。我一直在寻找一种方法来使用joins在所有商店中列出所有产品以及最低价格。我已经接近不幸了。我得到的最好的是能够进行查询,返回灯泡的最低销售价格(我认为),但价格属性不包括在输出中。

我以前做的,这是查询:

Product.joins(:store_products).select('products.*, MIN(store_products.price) AS store_product_price') 

在哪里我错了或者我需要看看什么有什么建议?

+0

你的产品类有“的has_many:产品,通过:store_products”应该是“的has_many:商店,通过:store_products” – 2015-02-10 17:17:51

回答

0

如果你的查询工作正常,你可以访问store_product_price。看到它,只是试试这个:

Product.joins(:store_products) 
     .select('products.*, MIN(store_products.price) AS store_product_price') 
     .each { |p| puts p.store_product_price } 
+0

我不能相信这就是答案。谢啦。所以我试着做' .first.store_product_price'。发挥魅力。很高兴有一些新鲜的眼睛 – tomasbasham 2015-02-10 12:49:30

相关问题