Ruby on rails 这是一个很好的负载优化吗?

Ruby on rails 这是一个很好的负载优化吗?,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,在安装之后,我开始解决几个n+1问题 我以前使用安全导航操作员检查当前用户帐户的当前订阅: def current_subscription @current_subscription ||= current_user&.account&.subscription #n+1 scenario @current_subscription end 我使用.try()重构了一个新的查询: 这似乎很有效:我的测试仍然通过,Bullet也很满意 这是一个好的做法还是有更好的方法

在安装之后,我开始解决几个n+1问题

我以前使用安全导航操作员检查当前用户帐户的当前订阅:

def current_subscription
  @current_subscription ||= current_user&.account&.subscription #n+1 scenario
  @current_subscription
end
我使用.try()重构了一个新的查询:

这似乎很有效:我的测试仍然通过,Bullet也很满意

这是一个好的做法还是有更好的方法


谢谢。

您不需要这第二个
@current\u subscription
,它的值将从
current\u subscription
方法返回。如果您有任何
Subscription
account\u id
null
的订阅,则该方法可能不起作用。在ActiveRecord中有一个名为
find\u by
的方法,它执行您尝试执行的操作:

def current_subscription
  @current_subscription ||= Subscription.find_by(account_id: current_user&.account_id)
end

谢谢,这样更干净。
def current_subscription
  @current_subscription ||= Subscription.find_by(account_id: current_user&.account_id)
end