2011-07-18 55 views
0

我想我還不知道正確的術語,因此很難找到正確的答案。在Rails 3.x中通過middlemodel鏈接兩個模型

所以,我創建了Exhibit和Category的引擎。我創建了第三個模型分類,以便將展覽分配給多個類別。這隻有exhibit_id和category_id。

我想要做的是爲每個類別創建一個頁面,因此我將一個展覽分配給新聞類別,將其顯示在「新聞」頁面中,何時顯示在照片類別中以顯示在「照片」 「網頁等我想這是一個路由配置,但我還沒有到那裏(然而,請讓我知道,如果它確實是一個路由配置)

我的問題是如何檢索不同模型的字段,僅來自一個控制器。我有什麼:

class Categorization < ActiveRecord::Base 
    belongs_to :exhibit 
    belongs_to :category 
end 

class Category < ActiveRecord::Base 
    has_many :categorizations 
    has_many :exhibits, :through => :categorizations 
    acts_as_indexed :fields => [:title] 
    validates :title, :presence => true, :uniqueness => true 
end 

class Exhibit < ActiveRecord::Base 
    has_many :categorizations 
    has_many :categories, :through => :categorizations, :source => :category 
    acts_as_indexed :fields => [:title, :bulb] 
    validates :title, :presence => true, :uniqueness => true 
    belongs_to :foto, :class_name => 'Image' 
end 

我如何獲取Exhibit,屬於:category =>"News":foto

我試圖在Categorization模型添加scope :news, where(['category_id="1"']),我可以取回Categorization.news但我怎麼用這個展覽(我想這是Exhibit.foto)的照片連接Categorization.exhibit_id

我不知道從哪裏開始...

謝謝大家......

佩特羅斯

回答

1

我會在控制檯中試一下:

Categorization.news.first.exhibit.foto  

看看這不會給你所需的圖像對象。事情是這個消息有幾個可能的展品。

+0

......正好!我如何獲得'全部'而不是'第一個'?無論如何,感謝一堆,上面的查詢是一種魅力! – Cacofonix

+0

我想這一個: 'Categorization.news.each做| T |'' t.exhibit.foto' 'end' ...但它返回的'Categorization.news' – Cacofonix

+0

這是奇怪的。我完全複製了你的代碼 - 我得到了Image對象。這可能是您正在查看控制檯輸出,它向您顯示Categorization.news數組(應該在控制檯中)。 問題是,在每個循環中你都沒有對t.exhibit.foto做任何事情。可能你的意思是'Categorization.new.each do | t |把t.exhibit.foto.url結束'或什麼?我不知道你的Image模型是否有任何屬性,我認爲url應該是它的一部分,但是使用你在那裏的東西。它應該給你你的圖像屬性。 –