У меня есть объект PortStock
, который я отслеживаю через OrderHistory
. т.е. каждый раз, когда для объекта port_stock
выполняется определенное действие, я создаю объект order_history
, связанный с этим port_stock
.
Думайте о OrderHistory
как о истории транзакций на этом конкретном PortStock
.
Проблема теперь в том, что когда я удаляю объект PortStock
, я все еще хочу иметь возможность извлекать (и отображать) все order_history
объекты, связанные с этой записью PortStock
.
Вот как я это делаю в настоящее время, что не работает, когда @port_stock
был удален:
@port_stock = current_user.port_stocks.friendly.find(params[:id])
@stock = @port_stock.stock
@order_histories = OrderHistory.joins(:port_stock).where(port_stocks: { ticker: @stock.ticker}).group_by { |o| o.port_stock }
Мысли
Редактировать 1
Моя PortStock
модель выглядит так:
# == Schema Information
#
# Table name: port_stocks
#
# id :bigint(8) not null, primary key
# portfolio_id :integer
# stock_id :integer
# volume :integer
# action :integer
# position :integer default("open")
# ticker :string
#
class PortStock < ApplicationRecord
extend FriendlyId
friendly_id :ticker
belongs_to :portfolio
belongs_to :stock
has_many :order_histories
enum action: [ :buy, :sell ]
enum position: [ :open, :closed ]
end
Моя OrderHistory
модель выглядит так:
# == Schema Information
#
# Table name: order_histories
#
# id :bigint(8) not null, primary key
# port_stock_id :integer
# num_units :integer
# action :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class OrderHistory < ApplicationRecord
belongs_to :port_stock
enum action: [ :buy, :sell ]
end