Tengo un modelo de Company que has_many balances y prices .
class Company < ActiveRecord::Base has_many :balances, dependent: :destroy has_many :prices, dependent: :destroy end Tanto el Balance como el Price tienen columnas de date y amount .
Quiero obtener 10 artículos recientes de balances y la misma fecha de prices para ellos. Este es el código que escribí:
c = Company.first balances = c.balances.order(:date).last(10) prices = Balance.where(date: balances.map(&:date)) Creo que es mejor unir la tabla de blances y prices al principio y seleccionar de la tabla por company_id y date . Pero no sabía cómo escribirlo.
¿Cómo puedo escribirlo?
Quiero tener una función como esta en Rails.
ActiveRecord::Base.connection.execute('SELECT "balances".*, prices.name FROM "balances" LEFT JOIN "prices" ON "balances"."date" = "prices"."date" where balances.company_id = 1 AND prices.company_id = 1 ORDER BY balances.date ASC').values.last(10)