加入has_many:通过属性
问题描述:
我有一个非常简单的数据库模型集,通过链接器表实现多对多关联。加入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')
在哪里我错了或者我需要看看什么有什么建议?
答
如果你的查询工作正常,你可以访问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
我不能相信这就是答案。谢啦。所以我试着做'
你的产品类有“的has_many:产品,通过:store_products”应该是“的has_many:商店,通过:store_products” – 2015-02-10 17:17:51