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

时间:2014-05-22 20:31:05

标签: ruby-on-rails ruby cancan rails-admin

我正在使用rails_admin并设计用于身份验证。我怎样才能让每个用户只管理自己创建的帖子模型中的记录?我想我需要使用康康,但我不知道如何。

2 个答案:

答案 0 :(得分:1)

两个步骤:

  1. 在创建时将当前用户作为'user_id'存储在Post模型中

  2. 使用CanCan,输入ability.rb

    可以:manage,Post,:user_id => user.id

  3. 这样,每个用户只能管理他作为创建者存储的帖子

答案 1 :(得分:0)

您在假设必须使用CanCan时的权利。原因是你正在查看authorization

  

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

CanCan gem由Ryan Bates创建,旨在为用户提供对特定记录的访问权限。正如Danny所指出的那样,您需要执行以下操作:


postuser相关联 - 使用类似:

的内容
#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 %>