includes, association_cache, . p = Person.includes(:vehicles), :vehicles. , .
, p.cars, , :cars association_cache . , :vehicles.
p.vehicles OR p.cars, .
, , - - . , Hash.
, , , , . Person.includes(:cars, :trucks) 3 SQL , .
, , , . , , find_all_cars .
, , , vehicles :
def vehicles(sti_type=nil)
return super unless sti_type
super.find_all { |v| v.type == sti_type }
end
vehicles Rails, , , . define_method :
%w(cars trucks).each do |assoc|
define_method "preloaded_#{assoc}" do
klass = self.class.reflect_on_all_associations.detect { |assn| assn.name.to_s == assoc }.klass
vehicles.select { |a| a.is_a? klass }
end
end
includes, , select ing, where ing. , .
, , , .