Rails 3:我应该如何建立这种has_many关系?

时间:2011-05-04 20:24:05

标签: ruby-on-rails polymorphism 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模型。

思想?

1 个答案:

答案 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