2012-05-31 103 views
0

我的下面的問題可能表明對Ruby,Rails或甚至一般的oOP概念中的事情是如何工作的缺乏正確的理解,並且相信我在問之前我認爲和搜索了很多東西,但我甚至不能形成正確的搜索查詢,以找到正確的答案,所以反正這裏是我想達到什麼樣的...模型中的Rails關聯「父」引用

song = Artist.first.albums.first.songs.first 

這-to我understanding-將調用歌模型,並通過藝術家模型和專輯模型引用宋模型形成一個SQL查詢從數據庫中獲取數據 - 因爲我使用ActiveRecord。

真正的問題;有沒有辦法知道哪個歌手和專輯叫做Song模型?這在多對多關係中特別有用,我不想爲專輯/藝術家傳遞額外的參考。

所以,如果我在我的模型中有一個函數,無論出於何種原因,它將能夠告訴誰創建了這個Song實例?

回答

0

這是太多的鏈接,它過於複雜的事情。

但是,你可以做song.artistsong.album檢索歌曲的歌手和專輯,假設你有你的歌模型宣佈​​和belongs_to :artist關係。

但是,你可以簡單地做:

artist = Artist.first 
album = artist.albums.first 
songs = album.songs 

這種方式,你有藝術家,他/她的專輯你想(在這種情況下,第一個)和它的歌曲都在不同的變量,你可以處理他們分開。

+0

謝謝你的回答,我很清楚鏈接是多麼的醜陋,我用它作爲例子,爲了避免到底做了什麼,它必須將兩個或三個變量傳遞給視圖,對於這麼多原因,無論如何,當我在尋找時,我在Ruby的stdlib中找到了一個很棒的模塊,我不確定副作用是什麼,所以我會在它上面做更多的閱讀,它被稱爲ObjectSpace,我認爲很容易實現什麼我想使用ObjectSpace.each_object(藝術家)。 編輯:我將在類方法顯然調用ObjectSpace而不是視圖。 –

+0

我編輯了我的第一篇文章。它不是現在回答你的問題嗎? – Agis