我有模特简介.配置文件只有一个用户.用户模型具有字段邮箱.当我打电话的时候

Profile.some_scope.includes(:user)

它叫

SELECT users.* FROM users WHERE users.id IN (some ids)

但是我的用户模型有很多我在渲染中没有使用的字段.是否可以只加载用户的邮箱?所以,SQL应该是这样的

SELECT users.email FROM users WHERE users.id IN (some ids)

推荐答案

Rails没有传递include查询选项的功能.但我们可以通过模型下的association declaration传递这些参数.

对于您的场景,您需要在概要文件模型下创建一个与用户模型的新关联,如下所示

belongs_to :user_only_fetch_email, :select => "users.id, users.email", :class_name => "User"

我刚刚又创建了一个关联,但它只指向用户模型.所以你的问题是,

Profile.includes(:user_only_fetch_email)

Profile.includes(:user_only_fetch_email).find(some_profile_ids)

Ruby-on-rails相关问答推荐

在URL中将下划线更改为连字符Ruby on Rails

Heroku、Selenium、Chome和Chromedriver的复杂问题(抱歉,无法简单描述,请阅读详细信息)

删除链接不起作用,重定向 echo 示 Ruby

在 Ruby on Rails html.erb 文件中循环

Rails: WickedPDF: 分页符

rspec 共享示例与共享上下文

如何在我的 Gemfile 中找到未使用的Ruby

如何将字符串转换为类方法?

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

使用 jQuery 在 Rails 中不显眼的动态表单字段

Rails:从视图内渲染视图(不是部分视图)

遇到在早期版本的 Rails 中使用 attr_accessible 的情况时,Rails 4 中的禁止属性错误

rails structure.sql和schema.rb有什么区别

Rails,设计认证,CSRF 问题

是否可以使用 Rails 迁移重命名索引?

Ruby 根据属性在数组中查找并返回对象

用于在多行上链接调用的 Ruby 约定

我应该在 Heroku Cedar 上使用薄的还是独角兽

将现有的 html.erb 转换为 Haml

简单的 rails rake 任务拒绝运行并出现错误不知道如何构建任务,为什么?