has_many或HABTM

时间:2013-04-09 18:23:21

标签: ruby ruby-on-rails-3

这个问题已被多次询问,但我无法预测任何有关我具体情况的答案,所以就这样了。

我有一个eventsoptions和一个templates表。还有一个名为events_templates的连接表,其字段为:

  • option_id
  • template_id
  • event_id的

事件每个选项都有一个模板。但显然可以有很多模板,因为有多种选择。

目前我的event模型有方法

has_many :templates, class_name: "EventsTemplate"

问题是,这是正确的设置还是我应该使用HABTM?

非常感谢!

1 个答案:

答案 0 :(得分:1)

我认为你应该根据你指定的要求将它设置得有点不同。

has_many :templates, class_name: "EventsTemplate"

这不会按照你想要的方式工作。它将为事件提供关联模板,但调用该关联将返回EventTemplates。

您可能希望使用through关联进行设置。

class EventTemplate < ActiveRecord::Base
  belongs_to :option
  belongs_to :template
  belongs_to :event
end

class Event
  has_many :event_templates
  has_many :templates, through: :event_templates
end