Tengo dos modelos: A y B
Entre ellos hay una relación 1:1, donde todos los elementos de B están
relacionados con alguno de A, pero NO todos los de A están relacionados
con
alguno de B. Por esto, B contiene un campo ‘a_id’.
Necesito listar todos los elementos de A que no tienen relación con B.
Una posible SQL que se me ha ocurrido es: “select * from A left join B
on
B.a_id is null”
Pero me gustarÃa algo más RoR, algo del estilo A.find_all_by_*…
¿Alguna sugerencia?
Pero me gustarÃa algo más RoR, algo del estilo A.find_all_by_*…
¿Alguna sugerencia?
Se me acaba de ocurrir otra:
A.find :all, :include => :B, :conditions => ‘a_id is null’
Me sigue sin parecer demasiado buena, seguro que hay alguna manera mas
bonita ¿que os parece?
On Aug 27, 2007, at 12:01 PM, Paco García wrote:
Se me acaba de ocurrir otra:
A.find :all, :include => :B, :conditions => ‘a_id is null’
Me sigue sin parecer demasiado buena, seguro que hay alguna manera
mas bonita ¿que os parece?
Es lo suyo, otra opcion seria ir de B a A de este modo:
B.find_all_by_a_id(nil).map(&:a)
pero creo que me gusta menos. Si busco As me gusta partir de A por lo
general.
– fxn
On 27/08/07, Paco García [email protected] wrote:
Se me acaba de ocurrir otra:
A.find :all, :include => :B, :conditions => ‘a_id is null’
Me sigue sin parecer demasiado buena, seguro que hay alguna manera mas
bonita ¿que os parece?
Si sacas eso del controlador y lo metes como un método “find_orphans”
del modelo A, te queda bastante bien
–
Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.
Manuel González Noriega
escribió:> Si sacas eso del controlador y lo metes como un método “find_orphans”
del modelo A, te queda bastante bien
+1 al comentario de Manuel, me gusta recubrir esos find’s con nombres
descriptivos en los modelos porque hace el código mucho más legible y
fácil de reutilizar.
Saludos,
Raul M.