我对 Rails 还很陌生,我真的很感激一些正确方向的指示。我了解 STI 的利弊。
在 Rails 3.2 中结合单表继承和多态关联来建模 AR 关系的最佳实践是什么?通过决定同时使用这两种方法,这种方法会有什么重要的缺点吗?Rails 4 会改变现状吗?
到目前为止,我有以下模型:
class Course
has_many :participants, class_name: 'User'
has_many :events, as: :eventable
end
class User
has_many :events, as: :eventable
has_many :courses
end
class Resource
has_many :events, as: :eventable
end
class Subject < Resource
end
class Location < Resource
end
class Medium < Resource
end
class Event
belongs_to :eventable, polymorphic: true
end
到目前为止看起来相对容易,但我正在努力应对复杂的关联。我将如何设置与 STI 的以下关联?
- 一门课程可以有很多资源(如科目/地点)
- 一个用户可以拥有许多资源(如主题/位置)
- 一个资源可以有很多用户(作为联系人)
- 事件本身可以有其他用户(作为教师)
- 事件本身可以有额外的资源(如地点/主题/媒体)
我想从数据库中检索的示例
- 用户的所有事件
- 课程的所有事件
- 参与者的所有组合事件(用户和课程)
- 来自事件的所有关联的位置类型资源
- 一个事件的所有相关教师
- 课程中位置类型的所有资源
- 来自用户的所有主题类型资源
TIA 和最好的问候
克里斯