Ruby on rails 每个用户只能看到自己创建的记录
我正在使用rails_admin和Desive进行身份验证。我怎样才能让每个用户都只管理自己创建的post模型中的记录?我想我需要使用cancan,但我不知道如何使用。两个步骤: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 通过这种方式,每个用户只能管理那些他作为创建者存储的帖子您认为必须使用的权限。原因是你在看 身份验证和授权的区别在于前者 定义某人是否可以访
通过这种方式,每个用户只能管理那些他作为创建者存储的帖子您认为必须使用的权限。原因是你在看 身份验证和授权的区别在于前者 定义某人是否可以访问系统;后者将定义经过身份验证的用户是否能够访问/更改特定资源 由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