Как мне сохранить ассоциации для удаленного объекта? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть объект 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
...