Я пытаюсь найти лучшую структуру БД для этой установки:
У меня есть два типа пользователей: продажи и рынок.У каждого пользователя может быть несколько клиентов.Каждый клиент может иметь несколько транзакций. Транзакциям будет назначен тип транзакции: «продажи» или «рыночные».У каждого клиента может быть только один пользователь продаж и один пользователь рынка.
Мне нужно иметь возможность получать список транзакций для каждого пользователя, поэтому для пользователя «продажи» user.transactions возвращает все транзакции стип «sales» для всех клиентов, для которых пользователь «sales» является пользователем
Я начал со следующей настройки, но не могу получить все запросы, которые мне нужны, например:
u = User.find(5)
Transaction.all.where(sales_ee: u)
# This is returning nothing
На данный момент это настройка:
class User < ApplicationRecord
has_many :sales_clients, :class_name => "Client", :foreign_key => "sales_ee_id"
has_many :market_traders, :class_name => "Client", :foreign_key => "market_ee_id"
has_many :clients, dependent: :destroy
has_many :transactions, :through => :traders
end
class Client < ApplicationRecord
belongs_to :sales_ee, :class_name => 'User', optional: true
belongs_to :market_ee, :class_name => 'User', optional: true
has_many :transactions, dependent: :destroy
belongs_to :user
end
class Transaction < ApplicationRecord
belongs_to :client
has_one :user, :through => :client
has_one :sales_ee, :through => :client
has_one :market_ee, :through => :client, required: false
end
Я не уверен, что более подходящим вариантом может быть использование двух классов пользователей - любая помощь будет высоко оценена.