Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 每个用户只能看到自己创建的记录_Ruby On Rails_Ruby_Cancan_Rails Admin - Fatal编程技术网

Ruby on rails 每个用户只能看到自己创建的记录

Ruby on rails 每个用户只能看到自己创建的记录,ruby-on-rails,ruby,cancan,rails-admin,Ruby On Rails,Ruby,Cancan,Rails Admin,我正在使用rails_admin和Desive进行身份验证。我怎样才能让每个用户都只管理自己创建的post模型中的记录?我想我需要使用cancan,但我不知道如何使用。两个步骤: 在创建时将Post模型中的当前用户存储为“user\u id” 使用CanCan,输入ability.rb can:manage,Post,:user\u id=>user.id 通过这种方式,每个用户只能管理那些他作为创建者存储的帖子您认为必须使用的权限。原因是你在看 身份验证和授权的区别在于前者 定义某人是否可以访

我正在使用rails_admin和Desive进行身份验证。我怎样才能让每个用户都只管理自己创建的post模型中的记录?我想我需要使用cancan,但我不知道如何使用。

两个步骤:

  • 在创建时将Post模型中的当前用户存储为“user\u id”

  • 使用CanCan,输入ability.rb

    can:manage,Post,:user\u id=>user.id


  • 通过这种方式,每个用户只能管理那些他作为创建者存储的帖子

    您认为必须使用的权限。原因是你在看

    身份验证和授权的区别在于前者 定义某人是否可以访问系统;后者将定义经过身份验证的用户是否能够访问/更改特定资源

    由Ryan Bates创建,以允许用户访问特定记录。正如Danny所指出的,您需要执行以下操作:


    帖子
    用户
    相关联-使用如下方法:

    #app/models/post.rb
    Class Post < ActiveRecord::Base
       belongs_to :user #-> means you need user_id column in posts table
    end
    
    #app/models/user.rb
    Class User < ActiveRecord::Base
       has_many :posts
    end
    
    #app/models/post.rb
    类Post表示您需要posts表中的user#id列
    结束
    #app/models/user.rb
    类用户
    然后您就可以使用像CanCan这样的gem来提供授权:

    #app/models/ability.rb
    class Ability
      include CanCan::Ability
    
      def initialize(user)
         can :edit, Post, user_id: user.id 
      end
    
    end  
    
    #app/views/posts/index.html.erb
    <% for post in @posts do %>
       <% if can? :edit, post %>
           <%= post.title %>
       <% end %>
    <% end %>
    
    #app/models/ability.rb
    班级能力
    包括CanCan::能力
    def初始化(用户)
    can:编辑、发布、用户\u id:user.id
    结束
    结束
    #app/views/posts/index.html.erb