krn*_*krn 6 activerecord ruby-on-rails
我有一个entries表content可能包含大量文本的字段.在大多数情况下,我不需要访问该字段,因此每次从数据库加载大量未使用的数据(从*= 1的条目中选择*)似乎是浪费大量资源.
我怎样才能指定default_scope,除了content从数据库加载的所有字段?
phl*_*per 13
假设Rails 3和一个如下所示的模式:
create_table "entries", :force => true do |t|
t.string "title"
t.text "content"
t.datetime "created_at"
t.datetime "updated_at"
end
Run Code Online (Sandbox Code Playgroud)
您可以使用该select方法来限制返回的字段,如下所示:
class Entry < ActiveRecord::Base
default_scope select([:id, :title])
end
Run Code Online (Sandbox Code Playgroud)
在rails控制台中,您应该看到如下内容:
puts Entry.where(:id => 1).to_sql # => SELECT id, title FROM "entries" WHERE "entries"."id" = 1
Run Code Online (Sandbox Code Playgroud)
当您想要选择所有字段时,可以使用如下unscoped方法:
puts Entry.unscoped.where(:id => 1).to_sql # => SELECT * FROM "entries" WHERE "entries"."id" = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |