2015-02-10 111 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

相關問題