Сравнение времени для вложенных ассоциаций - PullRequest
0 голосов
/ 11 января 2019

Я нахожусь в процессе создания приложения, которое будет принимать определенную дату от пользователя и которое затем предоставит список событий, которые произошли до этой даты. Хотя мой код работает, если я ищу определенное значение, я не могу выполнить поиск, когда передается определенная дата. По сути, я хотел бы просмотреть все дочерние элементы, которые произошли до этой конкретной даты.

My Investments models is this: 

    class Investment < ApplicationRecord
  has_many :transactions

  def count
    final_quanity = 0
    self.transactions.each do |transaction|
      final_quanity+= transaction.quantity
    end
    final_quanity
  end

  def average_price
    total_spent = 0
    self.transactions.each do |transaction|
      total_spent += transaction.price
    end
    total_spent
  end
end

Моя модель транзакций такая:

class Transaction < ApplicationRecord
  belongs_to :investment


end

Инвестиционный контролер

class InvestmentsController < ApplicationController

  def index
    if params[:date]

      # @investments = Investment.includes(:transactions).where(transactions: {quantity:10})
      @investments = Investment.includes(:transactions).where("date > ?", params[:date])
    else
      @investments = Investment.all
    end
    render json: @investments
  end

end

Я бы хотел вернуть только определенные транзакции, которые произошли до указанной даты, поскольку у меня возникают трудности с условным возвратом. Как видно из заблокированного кода, я могу успешно возвращать записи с определенным значением. Как правильно выполнить запрос на активную запись с помощью условия?

Странно, что работает следующее:

@transactions = Transaction.where("date < ?", date)

Пока это не так:

  @investments = Investment.includes(:transactions).where("date > ?", date)

Вместо этого я получаю сообщение об ошибке, в котором нет такого столбца, как «дата».

По сути, как лучше всего выполнить это действие:

  @investments = Investment.includes(:transactions).where( :transactions => {:price => 100}) 

за исключением определения, является ли значение больше или меньше, чем просто соответствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...