web-dev-qa-db-fra.com

Rails - Rejoindre plusieurs tables

J'ai les modèles suivants:

class Company < ActiveRecord::Base
  has_many :price_movements
  has_many :goods_movements
end

class PriceMovement < ActiveRecord::Base
  belongs_to :company
end

class GoodsMovement < ActiveRecord::Base
   belongs_to :company
end

J'essaie de tout rassembler dans un sql sous la forme d'activerecord, mais je ne sais pas comment faire parce que je suis relativement nouveau pour ROR.

select * from companies c

inner join price_movements p
on c.id = p.company_id

inner join goods_movements g
on c.id = g.company_id
and g.date = p.date

Le problème clé pour moi est le deuxième lien où la date du mouvement des marchandises == la date du mouvement du prix. Quelqu'un peut-il demander s'il existe un moyen de le faire?

15
mingsheng
Company.joins(:price_movements,:goods_movements).where("goods_movement.date = price_movement.date")

Passez par ce lien il a une explication détaillée de la façon d'utiliser ActiveRecord

22
shiva