У меня проблема с объединением двух моделей в n..n ассоциации.
У меня есть следующие ассоциации в контексте:
- Предложение n..n Продукт
- Предложение n..n Project
- Предложение n..n NewProject
И аналогично этому у меня есть:
- Order n..n Продукт
- Заказ n..n Проект
- Заказ n..n NewProject
Итак, модель соединения имеет одинаковые атрибуты в обоих случаях,но частичное для каждого из них отличается.
Есть ли способ создать единую модель соединения (Item), в которой будут храниться все данные, но которая будет использоваться с тремя разными псевдонимами в Order and Proposal?
Я пытался кодироватьэто так, но не сработало ..
offer.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
order.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
product.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
project.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
item.rb
class Item < ApplicationRecord
belongs_to :piece, polymorphic: true
belongs_to :requisition, polymorphic: true
...
end
Я ожидаю объединить эти ассоциации, очистить некоторые таблицы и попытаться ускорить приложение.