Ruby on Rails:默认情况下阻止选择列

2024-01-30

I have 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails:默认情况下阻止选择列 的相关文章

随机推荐

  • 在触发器内调用的 postgres 函数中的 select 语句

    我正在尝试为社交媒体应用程序 网站的后端开发一个通知系统 现在我专注于状态更新 我要做的就是在与状态更新相关的 postgres 表上放置一个触发器 以便每次发布新的状态更新时 都会向我的代码发送通知 到目前为止我已经能够做到这一点 但我喜
  • 在 Debian Jessie 上编译 Python 3.6.2 在共享模块上出现段错误

    我正在尝试使用以下选项在 Debian Jessie 盒子上编译 Python 3 6 2 configure prefix opt python3 enable optimizations with lto enable profilin
  • PHP默认参数[重复]

    这个问题在这里已经有答案了 在 PHP 中 如果我有一个这样写的函数 function example argument1 argument2 argument3 我可以像这样在其他地方调用这个函数 example argument1 但如
  • preg_match() 与 strpos() 进行匹配查找?

    For 单值检查 两者中哪一个是首选 为什么 string The quick brown fox jumps over the lazy dog if strpos string fox false do the routine vers
  • 根据换行符将命令输出行存储到数组中

    我有一个如下变量 并且我执行某些操作来一一打印输出 如下所述 a My name is A Her Name is B His Name is C echo a awk F nN ame for i 2 i lt NF i 2 print
  • Delphi中如何识别发送者的Tobject类型?

    我正在为带有无线电组的对话框创建代码 作为首选项表单的一部分 我们代码的一部分是 当打开首选项表单时 单击单选按钮组 这会配置一堆内容 即 如果单选按钮处于 关闭 状态 则隐藏一堆配置内容 我想要知道用户何时实际单击单选按钮组 而不是在首选
  • 仅在反应本机 MapView 上设置初始区域

    使用案例 使用react native MapView 组件将注释显示在地图上 设置初始地图区域 以便所有注释都可见 注释正在移动 这会触发重新渲染 此外 用户应该能够平移 缩放地图 所以onRegionChange and onRegio
  • 使用 Leiningen 在 Raspberry Pi 上改进 Clojure REPL 的启动时间

    我获得了 Raspberry Pi 512MB 版本 2012 年末 并安装了适用于 ARM 的 Java SE 8 开发者预览版 https blogs oracle com java entry developer preview of
  • 无限循环 - 顶部还是底部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 本着这样的问题的精神您的循环是在顶部还是底部进行测试 https stackoverflow com questions 224059 do y
  • 当你是 git 中的原始仓库时,你如何进行本地拉取?

    我有一台服务器 我在其中设置了 Git 存储库 从我的客户那里 我可以执行 git拉原点 and git 推送原点 我的更改已正确推送 拉取到远程 Git 服务器 我还需要能够在服务器本身上签出项目 我没有使用初始化 裸露当我设置它时 因为
  • 如何在 Spark 2.0+ 中编写单元测试?

    我一直在尝试寻找一种合理的测试方法SparkSession使用 JUnit 测试框架 虽然似乎有很好的例子SparkContext 我不知道如何获得相应的示例SparkSession 即使它在内部的多个地方使用火花测试基地 https gi
  • AXIS-JAXB Unmarshal 不适用于除 jdk 1.8.077 之外的任何 JDK

    我已遵循以下程序 使用 WSDL Apache Axis 1 在 eclipse 中生成客户端文件 使用 JAXB 解组请求 XML 然后调用 Web 服务 如果我使用 JDK 1 8 077 则 XML 会成功解析 如果我使用任何其他 J
  • 在基于phonegap的应用程序上使用jspdf生成客户端pdf

    我尝试从本地数据生成pdf 我在使用 ArrayBuffer 和 Uint8Array 对象时遇到问题 解决方案是添加我在互联网上找到的 js 实现 现在这一行有一个错误 E Web Console 21515 Uncaught TypeE
  • 导入错误:没有名为 argparse 的模块

    我正在尝试运行 Python 程序 但出现错误 ImportError No module named argparse 我找到了问题 argparse cli 中的 Python 模块 https stackoverflow com qu
  • 在任何页面上设计注册表单

    我试图允许用户在我的主页 登陆页面上注册该网站 我已将设备注册表复制到我的登陆页面视图中 div br div div br div div div
  • Ruby,exec、system 和 %x() 或反引号之间的区别

    以下 Ruby 方法有什么区别 exec system and x or 反引号 我知道它们用于通过 Ruby 以编程方式执行终端命令 但我想知道为什么有三种不同的方法来执行此操作 system The system http www ru
  • dropzone.js 在没有 dropzone 的页面上给出错误“无效的 dropzone 元素”

    我正在使用 dropzone js 它在我需要 dropzone 的页面上运行得很好 在任何其他页面上 虽然它给了我一个 Invalid dropzone element 错误消息并导致我的其他 javascript 出现问题 我有一个自定
  • 区分 False 和 0

    假设我有一个包含不同值的列表 如下所示 1 2 3 b None False True 7 0 我想迭代它并检查每个元素是否不在某些禁止值列表中 例如 这个列表是 0 0 0 当我检查是否为 False 时 0 0 0 I get True
  • 为什么必须使用函数指针?

    什么情况下需要函数指针 标准答案似乎是回调 但为什么我们不能只传递一个函数呢 我正在阅读的关于 C 的书演示了将函数作为参数传递 并承认实际上编译器会将其转换为函数指针并传递它 因为函数不是实际对象 它显示了使用函数指针的等效代码 这稍微复
  • Ruby on Rails:默认情况下阻止选择列

    I have entries表与一个content可能包含大量文本的字段 在大多数情况下 我不需要访问该字段 因此每次从数据库加载大量未使用的数据 从 id 1 的条目中选择 似乎是对资源的巨大浪费 我如何指定default scope 除