我有模特个人资料。个人资料有_一个用户。用户模型具有字段电子邮件。当我打电话时
Profile.some_scope.includes(:user)
it calls
SELECT users.* FROM users WHERE users.id IN (some ids)
但是我的用户模型有许多我在渲染中没有使用的字段。是否可以仅加载用户的电子邮件?所以,SQL 应该是这样的
SELECT users.email FROM users WHERE users.id IN (some ids)
Rails 没有能力传递选项include询问。但我们可以通过以下方式传递这些参数协会声明在模型下。
对于您的场景,您需要在配置文件模型下创建与用户模型的新关联,如下所示
belongs_to :user_only_fetch_email, :select => "users.id, users.email", :class_name => "User"
我刚刚又创建了一个关联,但它仅指向用户模型。所以你的查询将是,
Profile.includes(:user_only_fetch_email)
or
Profile.includes(:user_only_fetch_email).find(some_profile_ids)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)