gpt4 book ai didi

ruby-on-rails - Ruby on Rails : prevent from selecting a column by default

转载 作者:行者123 更新时间:2023-12-03 00:47:25 24 4
gpt4 key购买 nike

我有一个 entries 表,其中有一个 content 字段,其中可能包含大量文本。在大多数情况下,我不需要访问该字段,因此每次从数据库加载大量未使用的数据(从 id = 1 的条目中选择 *)似乎是对资源的巨大浪费。

如何指定 default_scope,即除了 content 之外的所有字段都将从数据库加载?

最佳答案

假设 Rails 3 和一个如下所示的架构:

create_table "entries", :force => true do |t|
t.string "title"
t.text "content"
t.datetime "created_at"
t.datetime "updated_at"
end

您可以使用select方法来限制返回的字段,如下所示:

class Entry < ActiveRecord::Base
default_scope select([:id, :title])
end

在 Rails 控制台中,您应该看到如下内容:

puts Entry.where(:id => 1).to_sql  # => SELECT id, title FROM "entries"  WHERE "entries"."id" = 1

当您确实想要选择所有字段时,可以使用 unscoped 方法,如下所示:

puts Entry.unscoped.where(:id => 1).to_sql  # => SELECT * FROM "entries"  WHERE "entries"."id" = 1

关于ruby-on-rails - Ruby on Rails : prevent from selecting a column by default,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com