我的模型關聯如下:的Rails 3:包括通過聯想從一個的has_many場
#book model
class Book < ActiveRecord::Base
has_many :recommendations, :dependent => :destroy
has_many :similars, :through => :recommendations, :conditions => ['recommendation_type IS NULL'], :order => 'recommendations.created_at DESC'
#recommendation model
class Recommendation < ActiveRecord::Base
belongs_to :book
belongs_to :similar, :class_name => 'Book', :foreign_key => 'similar_id'
#Books_controller - injecting the recommendation_id
@book = Book.find(params[:id])
if params[:content_type]
@content_type = params[:content_type];
else
@content_type = "similars"
end
case @content_type
when "similars"
# get the similars
@book_content = @book.similars
@book_content.each do |similar|
@rec_id = Recommendation.where(:book_id=>similar.id, :recommendation_type=>'S').select('id').first.id
similar << {:rec_id => @rec_id}
# ^-- Above line gives NoMethodError (undefined method `<<' for #<Book:0x10de1f40>):
end
when "references"
# get the references
@book_content = @book.references
@book_content.each do |reference|
@rec_id = Recommendation.where(:book_id=>reference.id, :recommendation_type=>'R').select('id').first.id
reference << {:rec_id => @rec_id}
# ^-- Above line gives NoMethodError (undefined method `<<' for #<Book:0x10de1f40>):
end
end
所以如上所述,一本書有很多同類者通過建議。我的要求是,雖然檢索類似,我也想包括編號的相應記錄在連接表建議。
我的問題是:
我怎麼能包括現場* recommendation_id *非常久遠 同類者?
如果它不能直接包含,那麼什麼是正確的方式
分別確定這個字段(如上所示),然後 其注入同類者實例變量,這樣我可以直接使用 它在我看來?
你想在這裏做什麼範圍相似的建議?添加更多的細節,你會得到更好的迴應。 – 2012-01-30 02:14:04
@MatthewLehner,感謝您的評論。我編輯了這篇文章,介紹更多細節。請幫助。 – rgoraya 2012-01-30 03:49:30
難道你不能只用@ similar.recommendation_id嗎? - 如果這不起作用,請發佈您的類似模型和您想要的視圖邏輯。 – 2012-01-31 05:35:05