gpt4 book ai didi

ruby-on-rails - 如何急切加载与 current_user 的关联?

转载 作者:行者123 更新时间:2023-12-03 15:18:42 25 4
gpt4 key购买 nike

我在我的 Rails 应用程序中使用 Devise 进行身份验证。我想在我的一些 Controller 中急切地加载一些与用户相关的模型。像这样的东西:

class TeamsController < ApplicationController

def show
@team = Team.includes(:members).find params[:id]
current_user.includes(:saved_listings)

# normal controller stuff
end
end

我怎样才能做到这一点?

最佳答案

我遇到了同样的问题,虽然每个人都一直说没有必要这样做,但我发现有,就像你一样。所以这对我有用:

# in application_controller.rb:
def current_user
@current_user ||= super && User.includes(:saved_listings).find(@current_user.id)
end

请注意,这将加载所有 Controller 中的关联。对于我的用例,这正是我所需要的。如果您真的只希望在某些 Controller 中使用它,则必须对其进行更多调整。

这也将调用 User.find两次,但查询缓存不应该是一个问题,并且由于它可以防止一些额外的数据库命中,它仍然是一个性能提升。

关于ruby-on-rails - 如何急切加载与 current_user 的关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com