单向has_and_belongs_to_many关联的问题或替代方法

时间:2013-09-12 22:31:08

标签: ruby-on-rails ruby-on-rails-3 activerecord has-and-belongs-to-many

我的应用程序有两个组件,大部分是数据输入/跟踪和数据报告。

我有一个基本的数据跟踪对象,我们称之为Meter:

class Meter < ActiveRecord::Base
  has_many :activity_records
end

我有一组不同的报表对象,如表格报表,图表,小部件等。根据用户配置,所有这些对象都将Meters的集合称为数据源。

我通过连接表将此关系建模为has_and_belongs_to_many:一个Widget有很多米;许多小部件都可以引用米。

class Widget < ActiveRecord::Base
  has_and_belongs_to_many :meters
end

现在,我不认为Meters实际上需要知道哪些报告对象引用它们。仪表应该能够轻松存在,收集数据和(通过服务对象)响应数据请求。我永远不应该提到@meter.widgets

那么,在Meter模型中,我是否需要为所有不同的报告对象声明六种不同的habtm关系?

具体问题:
1.忽略对仪表的habtm声明会产生意想不到的后果吗? 2.有没有更好的方法来设计这种关系?

关于第二个问题,我使用了MeterSet的概念,但发现它有点过度设计:

class Widget < ActiveRecord::Base
  has_one :meter_set, as: :requester
  has_many :meters, through: :meter_set
end 

class MeterSet < ActiveRecord::Base
  belongs_to :requester, polymorphic: true
  has_and_belongs_to_many :meters
end

我已将联接的位置从一个模型移动到另一个模型......我想我已经减少了应用程序中的表数总体而言?

0 个答案:

没有答案