如何设置这种复杂的活动记录关系?

时间:2012-06-19 01:12:05

标签: ruby-on-rails activerecord has-many-through

我基本上想要建立类似于Netflix的DVD租赁模式的关系。

有用户,每个用户都有一个队列,每个队列包含许多DVD,DVD可以有很多队列。队列属于用户。

我不太确定如何在活动记录中设置它。我认为可能是一个队列,用户应该是一个has_many:通过关系,但这没有多大意义。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

class User < ActiveRecord::Base
  has_many :queues
end

class Queue < ActiveRecord::Base
  belongs_to :user
  has_many :dvd_queues
  has_many :dvds, through: :dvd_queues
end

class Dvd < ActiveRecord::Base
  has_many :dvd_queues
  has_many :queues, through: :dvd_queues
end

class DvdQueue < ActiveRecord::Base
  belongs_to :dvd
  belongs_to :queue
end

has_many&amp;之间使用has_and_belongs_to_many代替Dvd关联的好处Queue允许您将priority等字段添加到DvdQueue

  

如果我希望用户能够,哪些模型需要视图和控制器   将DVD添加到队列中,并查看其队列

通常,您会为User,Queue和Dvd提供相应的控制器,这些控制器提供映射到标准路由的CRUD操作,并具有索引的视图,new&amp;编辑动作。