【发布时间】:2011-06-18 04:13:35
【问题描述】:
我有一个类层次结构,但没有单表继承。
ThrowAway < ActiveRecord::Base
和
Junk < ThrowAway
问题是所有ThrowAway 对象都引用了Location。一个Location
belongs_to :throw_away, :polymprohic => true
问题是如果我定义
ThrowAway < ActiveRecord::Base
has_many :locations, :as => :throw_away
end
那么即使 Junk 继承自它并定义了不同的表名,throw_away_type 列将始终设置为 ThrowAway,而我实际上希望它设置为 Junk。
现在会有很多这样的子类,所以会有Stuff < ThrowAway Rags < ThrowAway 等。我希望它们都有一个Location,而不需要在每个单独的类中定义位置关系。
这可以通过rails实现吗?问题是不仅有位置,还有其他类型的关系,我宁愿在这里遵循一些 DRY。我假设我需要创建一个生成器方法,该方法将在当前对象上执行并在运行时生成这些关系生成器。
谢谢。
【问题讨论】:
标签: ruby-on-rails activerecord polymorphic-associations