2012-09-28 10 views
5

Dire che ho due tabelle, Parent e Child e ciascuno di essi ha un campo chiamato name, se faccio:Rails: risolvere l'ambiguità sul gruppo utilizzando simboli

Parent.join(:child).group(:name)

prendo un errore che indica che c'è un'ambiguità nel campo name. Potrei fare quanto segue

Parent.join(:child).group('parents.name')

per risolverlo, ma preferisco utilizzare un simbolo, se questo è possibile. Quindi, è?

risposta

1

È possibile ridefinire l'ambito di aggiungere automaticamente il prefisso nome della tabella

class Parent < ActiveRecord::Base 
    class << self; alias_method :old_group, :group; end 
    scope :group, lambda { |g| 
    old_group("#{table_name}.#{g}") 
    } 
end 

Parent.join(:child).group(:name) 
+2

Se si vuole di più dalla ActiveRecord, si dovrebbe verificare la gemma squeel https://github.com/ernie/squeel – jdoe

+0

Eri a destra, il 'gruppo (: parents =>: name)' magic non era fornito da Rails ', ma dalla gemma di squeel. Dispiace per la confusione. – jdoe

+0

Grazie, ma questo non risolve esattamente il mio problema, in quanto non mi permette di specificare "childs.name", per esempio. Darei un'occhiata a quella gemma di Squeel :) –

Problemi correlati