我有以下型號:recommendations
,ratings
和product
。一個product
has_many
recommendations
,一個recommendation
has_many
products
,一個recommendation
has_many
ratings
和rating
belongs_to
一個recommendation
。
我目前使用以下查詢找到我的索引的所有記錄:Rails 3與has_many協會查詢
@recommendations = Recommendation.find(:all, :joins => :products, :conditions => ["product_id = ? AND rating_set = ?", (params["product_id"]), (params["rating_set_id"])])
,並得到各記錄推薦評級,我還有一個範圍與我在查看通話。
我該怎麼設置@recommendatons
以找回特定product_id
和rating_set
找到的所有建議和評分?
我想:
Recommendation.find(:all, :joins => :products,:include => :ratings, :conditions => ["product_id = ? AND rating_set = ?",2086981,40]).each do |rec|
puts rec.rating
end
這些印刷Nil
。
配車型更新:
產品
class Product < ActiveRecord::Base
has_many :product_recommendations, :dependent => :destroy
has_many :recommendations, :through => :product_recommendations
end
建議
class Recommendation < ActiveRecord::Base
has_many :product_recommendations, :dependent => :destroy
has_many :products, :through => :product_recommendations
has_many :ratings
end
評級:
class Rating < ActiveRecord::Base
belongs_to :recommendation
end
這是我需要的結果(如果等級已經創建這隻作品,這就是爲什麼我不能使用它):
@recommendations = Rating.find(:all, :conditions => ["product_id = ? AND rating_set = ?", (params["product_id"]), (params["rating_set_id"])])
什麼即時查詢:我需要找到所有建議 其中的product_id和rating_set =? ,?並且鑑於此,找到屬於這些建議中的每一個的所有評級。
更新
我能夠回到使用下面的查詢屬於推薦的所有評級: Recommendation.joins(:product_recommendations).includes(:ratings).where(:product_recommendations => { :rating_set => 48, :product_id => 2144877 })
當我遍歷收視陣列的時候,他們都沒有作用域正確rating_set ,而是我將所有rating_sets的所有評級都歸於特定推薦。如何獲得每個推薦和rating_set的評分數組。
是什麼'Recommendation.find(:全部:聯接=>:產品:包括=>:評級)'返回? – 2013-03-11 23:52:43
它返回以下查詢:'SELECT recommendations。* FROM recommendations INNER JOIN product_recommendations ON product_recommendations.recommendation_id = recommendations.id INNER JOIN products ON products.id = product_recommendations.product_id'。 – Yogzzz 2013-03-12 02:25:18
我的意思是多少行? – 2013-03-12 02:47:31