假设我想加载一堆Foo
条记录,但我只想将id
和title
属性加载到内存中:
foos = Foo.where([condition]).select('id, title')
如果我想加载一个属性(即因为它是巨大的文本列),该怎么办?你知道,比如:
foos = Foo.where([condition]).select('* except giant_text_dump')
显然这不起作用。但有办法吗?
答案 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)