2013-07-02 18 views
14

ActiveRecordですべての列を選択する方法はいくつかありますが、それ以外の方法はありますか?たとえば、ユーザーの場合、パスワードのハッシュまたは電子メールを選択したくありません。これは可能ですか、手動ですべての列をハードコードする必要がありますか?ActiveRecord以外の列を選択する

ありがとうございました

答えて

16

def select_without columns 
    select(column_names - columns.map(&:to_s)) 
end 
のようなスコープを書きます
+5

私は 'def select_without * columns'を実行するので、任意の数の引数を取ることができます – kenn

+0

は良い点です –

+0

このメソッドには問題があります:' COUNT'はここでは機能しません。 'Model.select([:a、:b])。count'はエラーを返します –

8

これはなんですか?

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

User.select(columns) 

私たちはARRAY1を行うことができますことを忘れてしまったEDIT

- ARRAY2

最善の答え:

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

User.select(columns) 
関連する問題