¿Cuál cree que es la forma más óptima de recuperar todos los atributos para todas las asociaciones que tiene un modelo AR?Recuperar todos los atributos de asociación de un modelo AR?
i.e: digamos que tenemos el modelo Target
.
class Target < ActiveRecord::Base
has_many :countries
has_many :cities
has_many :towns
has_many :colleges
has_many :tags
accepts_nested_attributes_for :countries, :cities, ...
end
me gustaría recuperar todos los atributos de la asociación llamando a un método en una instancia de destino:
target.associations_attributes
>> { :countries => { "1" => { :name => "United States", :code => "US", :id => 1 },
"2" => { :name => "Canada", :code => "CA", :id => 2 } },
:cities => { "1" => { :name => "New York", :region_id => 1, :id => 1 } },
:regions => { ... },
:colleges => { ... }, ....
}
Actualmente hago este trabajo iterando cada asociación, y después de cada modelo de la asociación, pero es un poco caro, ¿cómo crees que puedo optimizar esto?
Sólo una nota: me di cuenta de que no se puede llamar target.countries_attributes
en has_many
asociaciones con nested_attributes
, one_to_one
asociaciones permiten llamar target.country_attributes
Sí, estaba usando reflexiones, pero este método es más óptimo, solo una cosa, eliminé el 'todo' de' object_or_array = me.send (association_name) .all' No es realmente necesario y estropea las cosas si hay ' one_to_one' relaciones. ¡Gracias! – jpemberthy
Buena captura, he editado el ejemplo. Y no hay problema :) –