我正在使用rails_admin并设计用于身份验证。我怎样才能让每个用户只管理自己创建的帖子模型中的记录?我想我需要使用康康,但我不知道如何。
答案 0 :(得分:1)
两个步骤:
在创建时将当前用户作为'user_id'存储在Post模型中
使用CanCan,输入ability.rb
可以:manage,Post,:user_id => user.id
这样,每个用户只能管理他作为创建者存储的帖子
答案 1 :(得分:0)
您在假设必须使用CanCan
时的权利。原因是你正在查看authorization
身份验证与优化之间的区别授权是前者 定义某人是否可以访问系统;而后者将定义经过身份验证的用户是否能够访问/更改特定资源
CanCan
gem由Ryan Bates创建,旨在为用户提供对特定记录的访问权限。正如Danny
所指出的那样,您需要执行以下操作:
将post
与user
相关联 - 使用类似:
#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
然后您就可以使用像 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 %>