我不确定Rails中特定情况的最佳结构。我们有几种类型的研讨会。无论研讨会类型如何,研讨会的管理都是相同的,因此研讨会的数据采用单一模式。我们收集参与者关于研讨会的反馈,并且每种类型的研讨会的调查问卷都有所不同。我想从车间模型中获取有关车间的反馈,但相关车型的类别取决于车间的类型。如果我是通过Rails之外的其他方法来完成这项工作,我将为WorkshopFeedback设置一个抽象类,然后为每个类型的工作室分配一个子类:WorkshopFeedbackOne,WorkshopFeedbackTwo,WorkshopFeedbackThree。我不确定如何最好地处理这与Rails。带有共享接口的Rails中的多个模型
我目前有:
class Workshop < ActiveRecord::Base
has_many :workshop_feedbacks
end
class Feedback < ActiveRecord::Base
belongs_to :workshop
has_many :feedback_ones
has_many :feedback_twos
has_many :feedback_threes
end
class FeedbackOne < ActiveRecord::Base
belongs_to :feedback
end
class FeedbackTwo < ActiveRecord::Base
belongs_to :feedback
end
class FeedbackThree < ActiveRecord::Base
belongs_to :feedback
end
这似乎并不喜欢从车间模型访问反馈,访问正确的反馈,需要逻辑调查研讨会类型,然后选择最清晰的方式,例如@ workshop.feedback.feedback_one。
有没有更好的方法来处理这种情况?使用多态关联进行反馈会更好吗?或者可以使用模块或Mixin作为共享反馈接口?
注意:我在这里避免使用Single Table Inheritance,因为FeedbackOne,FeedbackTwo,FeedbackThree模型不会共享太多的常见数据,所以我最终会得到一个STI的大型稀疏填充表。
我应该在我的原始文章中注意到我不想使用STI,因为不同的反馈不会共享许多字段,所以我最终会得到一个大的人口稀少的表格。 – 2010-03-19 19:23:09