Ruby on rails 单个ActiveRecord的多个外键具有一个关系
我有一个与办公室和部门相关的模型Ruby on rails 单个ActiveRecord的多个外键具有一个关系,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个与办公室和部门相关的模型 class DataForm < ActiveRecord::Base belongs_to :office belongs_to :department end classdataform
class DataForm < ActiveRecord::Base
belongs_to :office
belongs_to :department
end
classdataform
我还有第三个模型,负责管理许多办公室/部门组合
class ManagementGroup < ActiveRecord::Base
belongs_to :office
belongs_to :department
end
class-ManagementGroup
我如何说数据表单与管理组有关联,其中办公室和部门彼此同步
class DataForm < ActiveRecord::Base
belongs_to :office
belongs_to :department
# how would I get the below association to work
has_one :management_group, foreign_key: [:office_id, :department_id]
end
classdataform
我怎么说数据表单与管理组有关联,在管理组中,办公室和部门彼此同步。你不能这样做。相反,您可以对其进行重组,以便:
属于数据表单
管理组
属于管理组
和:办公室
:部门
管理组来确定数据表单的:office
和:department
然后,您可以通过以下方式访问您的数据表单
的办公室:
@data_form.management_group.office
或者更好的是,使用委托人。示例如下:
class DataForm < ActiveRecord::Base
belongs_to :management_group
delegate :office, to: :management_group
delegate :department, to: :management_group
end
class ManagementGroup < ActiveRecord::Base
belongs_to :office
belongs_to :department
has_many :data_forms
end
我不太了解这些关系,所以如果DataForm只有一个ManagementGroup,为什么ManagementGroup不属于DataForm?见鬼,我认为DataForm应该属于ManagementGroup。我想它属于ManagementGroup,完全是基于它的office/department组合。我的想法是获取管理组的实际PK,然后将其存储起来。但这可能会导致不同步和额外的更新,而不仅仅是使用已经可以为我建立关联的数据。我相信这也是正确的方法,但我不太理解jared的商业案例。
@data_form.office
@data_form.department