gpt4 book ai didi

ruby-on-rails - current_user 的 default_scope

转载 作者:行者123 更新时间:2023-12-01 08:58:35 25 4
gpt4 key购买 nike

我正在尝试在我的应用中实现 gem devise。在此之前,我的顶级模型是 Album,但现在它是 belongs_to :user(来自设计)。

然后我添加到albums_controller.rb:

before_action :authenticate_user!

效果很好 - 用户必须从现在开始登录。现在我希望他在他的范围内用专辑做所有事情。我发现了那个方法:

def index
@albums = Album.all
end

我可以使用:

@albums = current_user.albums

对于我拥有的每种方法,依此类推。我想知道是否有更好的方法 - 将 current_user 设置为相册 Controller 中每个操作/方法的默认范围。然后我发现了一些有趣的东西here .我可以将它添加到专辑的模型中,但我不确定如何最好地为 current_user 构造 where 子句。也许是这样的:

class Album < ActiveRecord::Base
default_scope where(:user_id => current_user.id)
end

我什至不确定这是否是正确的方向。非常感谢您的建议。

最佳答案

您应该只使用常规命名范围:

范围 :for_user, lambda{ |user| where(:user_id => user.id) }

然后在你的 Controller 中替换

@albums = Album.all@albums = Album.for_user(current_user)

虽然理论上你可以通过 arguments对于您的默认范围,以上是首选方法。

关于ruby-on-rails - current_user 的 default_scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628602/

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