1

在 n..n 关联中加入两个模型时遇到问题。

我在上下文中有以下关联:

  • 提案 n..n 产品
  • 提案 n..n 项目
  • 提案 n..n 新项目

与此类似,我有:

  • 订购 n..n 产品
  • 订购 n..n 项目
  • 订购 n..n 新项目

好吧,连接模型在这两种情况下都具有相同的属性,但它们中的每一种的部分是不同的。

有没有办法做一个单一的连接模型(项目),它可以存储所有数据,但可以与订单和提案中的三个不同别名一起使用?

我试图像这样编码它,但没有工作..

提案.rb

    class Proposal < ActiveRecord::Base
      ...
      has_many :items
      has_many :products, through: :items, source: :requisition, source_type: "Produto"
      has_many :projects, through: :items, source: :requisition, source_type: "Projeto"
      has_many :projects, through: :items, source: :requisition, source_type: "Novo"
      ...
    end

订单.rb

    class Order < ActiveRecord::Base
      ...
      has_many :items, as: :requisition, dependent: :destroy
      has_many :products, through: :items, source: :requisition, source_type: "Produtos"
      has_many :projects, through: :items, source: :requisition, source_type: "Projetos"
      has_many :projects, through: :items, source: :requisition, source_type: "Novos"
      ...
    end

产品.rb

    class Product < ActiveRecord::Base
      has_many :items, as: :piece, dependent: :destroy
      has_many :orders, through: :items, source: :piece, source_type: 'Order'
      has_many :proposals, through: :items, source: :piece, source_type: 'Proposal'
      ...
    end

项目.rb

    class Project < ActiveRecord::Base
      has_many :items, as: :piece, dependent: :destroy
      has_many :orders, through: :items, source: :piece, source_type: 'Order'
      has_many :proposals, through: :items, source: :piece, source_type: 'Proposal'
      ...
    end

项目.rb

    class Item < ApplicationRecord
      belongs_to :piece, polymorphic: true
      belongs_to :requisition, polymorphic: true
      ...
    end

我希望统一这种关联,清除一些表格,并尝试加快应用程序的速度。

4

0 回答 0