如何解决将关联数据分配给变量而不是一次又一次地调用关联是一种好方法吗
我有类似的问题
@client.orders.last
@client.orders.pluck(:order_date)
@client.orders.where(delivered?: true)
如上 @client.orders
重复 3 次。因此将 @client.orders
分配给另一个变量并使用该变量是一种好方法。
例子
client_orders = @client.orders
client_orders.last
client_orders.pluck(:order_date)
client_orders.where(delivered?: true)
解决方法
如果您在同一请求中以这三种不同的方式使用 @client.orders
,那么您的第一个表单将创建一个 ActiveRecord::Relation
对象来表示您的查询子句每一次。然后,该对象将用于为每个查询生成 SQL。
第二种形式意味着不会在每一行重新生成初始对象,这将减少初始对象生成发生一次而不是三次。
但坦率地说,与与数据库通信和检索每个查询的结果所花费的时间相比,任何性能提升都可能很小,因此如果生产环境中存在任何明显差异,我会感到非常惊讶。
在那种情况下,我会说采用您认为可以使代码更易于维护的任何方法。
如果您认为性能可能是一个因素,那么使用 benchmark-ips 之类的东西在您自己的环境条件下比较两种方法是值得的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。