Я нахожусь в процессе создания приложения, которое будет принимать определенную дату от пользователя и которое затем предоставит список событий, которые произошли до этой даты. Хотя мой код работает, если я ищу определенное значение, я не могу выполнить поиск, когда передается определенная дата. По сути, я хотел бы просмотреть все дочерние элементы, которые произошли до этой конкретной даты.
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})
за исключением определения, является ли значение больше или меньше, чем просто соответствие.