gpt4 book ai didi

ruby-on-rails - 让 Cancan 的 load_and_authorize_resource 在自定义创建操作中工作

转载 作者:行者123 更新时间:2023-12-04 22:15:38 28 4
gpt4 key购买 nike

尝试在我的应用程序中设置 Cancan 并且在使用 PostsController 时遇到问题。

简而言之,当创建 Post 时,我希望它与 current_user 相关联,因此我的创建操作如下所示:

class PostsController < ApplicationController
before_filter :login_required, :except => [:index, :show]
load_and_authorize_resource
...
def create
# @post = Post.new(params[:post]) # <-- covered by load_and_authorize_resource
@user = current_user
@post = @user.posts.create(params[:post])
respond_to do |format|
...
end
...
end

我不确定 load_and_authorize_resource 打算做什么(除了显而易见的)。但是在这样的情况下呢?我需要以某种方式覆盖创建操作的 load_and_authorize_resource 吗?还是有另一种(阅读:更好)的方法来加载 @user 然后创建 @post

最佳答案

您的问题的一个更简单的解决方案是使用嵌套资源,而不是创建自定义操作

直接取自 CanCan Wiki:

Nested-Resources

As of 1.4, it's also possible to nest through a method, this is commonly the current_user method.

 class ProjectsController < ApplicationController
load_and_authorize_resource :through => :current_user
end

Here everything will be loaded through the current_user.projects association.



这也应该更安全,因为帖子的加载将通过 Controller 中其他操作的关联来完成

关于ruby-on-rails - 让 Cancan 的 load_and_authorize_resource 在自定义创建操作中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015301/

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