2011-05-04 46 views
0

試圖找出建立我的模型的最佳方法。這就是我要怎麼回事...Rails 3:我應該如何設置has_many關係?

型號:DogVideoPhotoUser

class Dog < ActiveRecord::Base 
    has_many :videos 
    has_many :photos 
    belongs_to :user 
end 

class Video < ActiveRecord::Base 
    has_many :dogs 
    belongs_to :user 
end 

class Photo < ActiveRecord::Base 
    has_many :dogs 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :dogs 
    has_many :videos 
    has_many :photo 
end 

我應該做has_many :through和多態?

在我以前的這個迭代,我不得不DogPhotoDogVideo車型,但好像我可以有一個DogItem模型是多態的。

想法?

回答

0

是的,多態關聯在這裏適用,這將是一個很好的做法。不過,我認爲你應該有一個像DogMedia這樣的新模型,那就是多態關聯。

這樣一個用戶有一隻狗,一隻狗有很多DogMedias。一個DogMedia是一個多態的協會,可以是照片,視頻或任何你喜歡的東西:)

你可以使用很多通過直接得到狗媒體爲用戶的狗直接是的。喜歡的東西:

User has many dog_medias through dog (plain language) 

或只是遍歷它通過狗:

user.dog.dog_media 

如果你是後者,你甚至可以創建一個媒體,而不是DogMedia類,創建一個委託並執行利落:

user.dog_media 

直接(http://en.wikipedia.org/wiki/Law_of_Demeter德米特法)

相關問題