我可以选择ActiveRecord中除一个属性之外的所有属性吗?

时间:2014-01-17 16:05:21

标签: ruby-on-rails activerecord

假设我想加载一堆Foo条记录,但我只想将idtitle属性加载到内存中:

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

如果我想加载一个属性(即因为它是巨大的文本列),该怎么办?你知道,比如:

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

显然这不起作用。但有办法吗?

2 个答案:

答案 0 :(得分:6)

喜欢这个吗?

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

答案 1 :(得分:2)

ActiveRecord没有办法内置,但你可以这样做:

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