我正在开发具有复杂关联的 Rails 4 应用程序,但我不知道如何将一个模型加入到父模型中。
基本上我的应用程序逻辑如下
User
- belongs_to :account, polymorphic: true
Developer
- has_one :user, as: :account
- has_and_belongs_to_many :organizations
Organization
- has_one :user, as: :account
- has_and_belongs_to_many :developers
- 我决定通过 STI 走这条路线,因为这使我能够使我的应用程序迁移文件更清晰、更有条理
所以可以有 aDeveloper
本身,也可以有 andOrganization
包含很多Developers
,所以我添加了has_and_belongs_to_many :organizations
andhas_and_belongs_to_many :developers
来创建这种关系。因此,如果我查找User.find().account.developers
或User.find().account.organizations
获取相关记录,我的应用程序中的所有内容都可以正常工作。
现在我们到了我遇到麻烦的部分。在我的 Rails 应用程序中,我有一个名为App
. 一个Developer
可以Apps
自己创建许多,或者一个Developer
可以在其中创建Organization
和创建许多Apps
,Organization
所有Developers
属于该对象的人也Organization
都可以访问。我不知道如何实现这样的关系。有什么建议么?
Developer
has_one :user, as: :account
has_many :apps, as: :appable
has_and_belongs_to_many :founding_organizations, class_name: 'Organization', foreign_key: :founder_id
has_and_belongs_to_many :collaborating_organizations, class_name: 'Organization', foreign_key: :collaborator_id
has_and_belongs_to_many :organizations (Should this stay?)
Organization
has_one :user, as: :account
has_many :apps, as: :appable
has_and_belongs_to_many :founders, class_name: 'Developer', association_foreign_key: :founder_id
has_and_belongs_to_many :collaborators, class_name: 'Developer', association_foreign_key: :collaborator_id
has_and_belongs_to_many :developers (Should this stay?)
App
belongs_to :appable, polymorphic: true