2012-09-28 12 views
5

Powiedz, mam dwie tabele, Parent i Child i oba z nich ma pole o nazwie name, jeśli zrobić:szyn: rozwiązywanie niejasności na grupy za pomocą symboli

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

będę się błąd informujący, że istnieje niejednoznaczność w polu name. Mogę wykonać następujące czynności

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

Aby go rozwiązać, ale wolałbym użyć symbolu, jeśli to możliwe. Czy to prawda?

Odpowiedz

1

Można zmienić zakres, aby automatycznie dodać nazwę prefiksów tabel

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

Jeśli chcesz więcej z ActiveRecord, należy sprawdzić gem squeel https://github.com/ernie/squeel – jdoe

+0

Byłaś po prawej, 'the group (: parents =>: name)' magia nie została dostarczona przez Rails, ale przez klejnot squeel. Przepraszam za zamieszanie. – jdoe

+0

Dzięki, ale to nie rozwiązało dokładnie mojego problemu, ponieważ nie pozwala mi na przykład określić "childs.name". Rzucę okiem na ten klejnot Squeel :) –

Powiązane problemy