【发布时间】:2013-09-06 00:59:19
【问题描述】:
大局:我正在创建一个应用程序来跟踪历史上的时间事件。我用四个主要模型设置它:用户、事件、故事和图像。这个想法是任何给定的用户都可以创建一个事件,并将故事和/或图像添加到他自己的事件或任何其他事件中。但是故事和图像总是附加到某个事件,并且任何其他模型都属于创建它的用户(用于过滤和编辑目的)
协会的一般结构是这样的:
class User < ActiveRecord::Base
has_many :events
has_many :stories
has_many :images
end
class Event < ActiveRecord::Base
belongs_to :user
has_many :stories
has_many :images
end
class Story < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
class Image < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
我是 Rails 的新手,我几乎无法控制更复杂的关联,例如 many_to_many、通过:或 as:
我的问题是,这组关联是最优的,还是可以通过以不同的方式组合它们来改进?
【问题讨论】:
-
我建议阅读 Polymorphic Associations。
-
仅当故事和图像必须同时属于事件和用户时,多态关联才适用于此,事实并非如此。
-
Story 和 Image 实际上必须始终同时属于某个 Event 和 User。唯一的问题是,故事可能属于与创建它所附加的事件的用户不同的用户
标签: ruby-on-rails ruby associations model-associations