2012-09-28 3 views
5

Sagen wir, ich habe zwei Tabellen, Parent und Child und beide ein Feld name genannt haben, wenn ich das tue:Rails: Lösung Zweideutigkeit auf Gruppe unter Verwendung von Symbolen

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

Ich werde einen Fehler besagt, dass es auf dem Gebiet eine Zweideutigkeit gibt name. Ich konnte die

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

folgende tun, es zu lösen, aber ich würde es vorziehen, ein Symbol zu verwenden, wenn das möglich ist. So ist es?

Antwort

1

Sie können den Umfang neu zu definieren, um automatisch den Tabellennamen Präfix hinzufügen

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

Wenn Sie mehr aus Active wollen, sollten Sie die squeel gem überprüfen https://github.com/ernie/squeel – jdoe

+0

Sie waren Richtig, die 'Gruppe (: Eltern =>: Name)' Magie wurde von den Schienen nicht zur Verfügung gestellt, sondern von dem schrillen Juwel. Entschuldigung für die Verwirrung. – jdoe

+0

Danke, aber das hat mein Problem nicht genau gelöst, da ich zB "childs.name" nicht angeben kann. Ich werde einen Blick in das Squeel Juwel werfen :) –

Verwandte Themen