2014-01-17 52 views
2

說我想加載了一堆Foo記錄,但我只是想將idtitle屬性加載到內存:我可以選擇ActiveRecord中除了一個以外的所有屬性嗎?

foos = Foo.where([condition]).select('id, title') 

,如果我想加載除了一個(即,因爲它是巨大的所有屬性是什麼文本列)?你知道,像這樣:

foos = Foo.where([condition]).select('* except giant_text_dump') 

很明顯,這是行不通的。但有沒有辦法?

回答

6

是否這樣?

Foo.where([condition]).select(*Foo.attribute_names.reject { |attr| attr == 'giant_text_dump' }) 
+0

啊...我結束了這樣的事情去。謝謝 :) –

2

的ActiveRecord沒有辦法做到這一點內置的,但你可以這樣做:

fields = (Foo.attribute_names - ['giant_text_dump']).join(',') 
Foo.where([condition]).select(fields) 
相關問題