2011-07-16 6 views
0

JeActive Record sans REJOIGNEZ

class Autosalon < ActiveRecord::Base 
    has_many :autos 
end 

class Auto < ActiveRecord::Base 
    belongs_to :autosalon 
end 

autosalon a drapeau actif = 1 et la date d'enregistrement, auto a drapeau actif = 1

Comment obtenir toutes les autos avec le drapeau actif dans autosalons avec le drapeau actif sans JOIN?

Répondre

2

Sans joint/includes, vous pouvez utiliser une requête SQL in:

Auto.where(:active => 1).where("autosalon_id in (select id from autosalons where active=1)") 
1

Quelque chose comme ça devrait le faire:

active_autosalons = Autosalon.where(:active => 1) 
active_autos = Autos.where(:autosalon_id => active_autosalons.map(&:id)).where(:active => 1) 

obtenir la liste des 'actifs' Autosalons d'abord, puis filtre Autos par les identifiants Autosalon et la colonne active.