1

我有两个模型。一个是Item模型,另一个是Event模型。
我需要做的是:

必须将一个Item“签出”到一个事件中。将Event显示Item除所述事件之外的所有内容。活动结束后,用户将Item重新签入。您仍然应该能够看到该活动之外的所有项目。

这就是我目前的模型:


商品型号:

class Item < ActiveRecord::Base
   has_and_belongs_to_many :events
end

事件模型:

class Event < ActiveRecord::Base
   has_many :items
end

我在其他地方读到过,我可以有一个这样的模型,我可以使用 :though 。然后,此模型将具有每个事件具有的所有项目。

活动列表

class EventList < ActiveRecord::Base
   belongs_to :item
   belongs_to :event
end

我希望 URL 路由看起来像:

domain.com/Event/:id/items/

domain.com/Event/:id/items/(checkedin or checkedout)

这是正确的做事方式吗?我应该有另一个表并使用:though => name这个特定问题吗?

4

1 回答 1

0

你把两者混在一起了。如果您使用has_and_belongs_to_many两种模型都应该这样定义。IE。

Item Model:

class Item < ActiveRecord::Base
  has_and_belongs_to_many :events
end

事件模型:

class Event < ActiveRecord::Base
   has_and_belongs_to_many :items
end

如果你想使用一个:through表,你只需用has_many.

至于你应该使用哪一个。他们都是正确的。下面的链接解释了何时使用其中一个。(基本上如果你想用连接表做事情,就使用这种:through方式,否则has_and_belongs_to_many很好)

http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many

于 2012-11-19T20:51:48.413 回答