2013-07-02 12 views
14

Czy istnieje sposób można określić, aby zaznaczyć WSZYSTKIE kolumny w ActiveRecord, z wyjątkiem zaledwie kilku. Na przykład dla użytkownika nie chcę wybierać hash hasła ani adresu e-mail. Czy to jest możliwe, czy muszę ręcznie szyfrować wszystkie kolumny?ActiveRecord wybierz z wyjątkiem kolumn

Dzięki

Odpowiedz

16

napisać zakres jak

def select_without columns 
    select(column_names - columns.map(&:to_s)) 
end 
+5

Zrobiłbym 'def select_without * columns', dzięki czemu można wziąć dowolną liczbę argumentów. – kenn

+0

to dobry punkt –

+0

Istnieje problem z tą metodą:' COUNT' nie będzie tutaj działał. Tak więc, 'Model.select ([: a,: b]). Count' rzuci błąd –

8

Coś takiego?

exclude_columns = ['password', 'email'] 
columns = User.attribute_names.delete_if(|x| exclude_columns.include?(x)) 

User.select(columns) 

EDIT

Zapomniałam, że możemy zrobić array1 - tablica2

Najlepszym odpowiedź:

exclude_columns = ['password', 'email'] 
columns = User.attribute_names - exclude_columns 

User.select(columns) 
Powiązane problemy