试图找出设置模型的最佳方法。这就是我要去的......
模特:Dog
,Video
,Photo
,User
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
和多态吗?
在我之前的迭代中,我有DogPhoto
和DogVideo
模型,但似乎我可以拥有一个多态的DogItem
模型。
思想?
答案 0 :(得分:0)
是的,这里适用多态关联,这是一个很好的做法。但是,我认为你应该有像DogMedia这样的新模型,这将是多态关联。
这样一个用户有一只狗,一只狗有很多DogMedias。 DogMedia是一种多态关联,可以是照片,视频或您喜欢的任何其他内容:)
您可以使用有很多通过直接获取用户狗的dogmedia是。类似的东西:
User has many dog_medias through dog (plain language)
或只是通过狗遍历:
user.dog.dog_media
如果你选择后者,你甚至可以创建一个Media而不是DogMedia类,创建一个委托并执行整洁:
user.dog_media
直接(demeter法则:http://en.wikipedia.org/wiki/Law_of_Demeter)