首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails cancan宝石

Rails cancan宝石
EN

Stack Overflow用户
提问于 2012-09-21 19:53:36
回答 1查看 256关注 0票数 0

嗨,我需要帮助与新的宝石'cancan‘(为我)

我还有一个问题:在我的应用程序中,我有'Post‘模型和'Photo’模型(路由:)

代码语言:javascript
复制
  resources :posts do
    resources :photos
  end

在ability.rb中,我写道:

代码语言:javascript
复制
class Ability
  include CanCan::Ability

  def initialize(user)

    user ||= User.new

    if user.roles.first.nil?
        can :read, Post
    #not logged
    elsif user.roles.first.name == "user"
        #loged in as user
        can :read, Post
        can :create, Post
        can :update, Post, :user_id => user.id
        can :destroy, Post , :user_id => user.id 

    elsif user.roles.first.name == "admin"
        # login as admin
        can :manage, Post
    end

  end
end

我不知道该怎么说:如果帖子是由另一个用户创建的,那么当前用户就没有访问页面的权限

代码语言:javascript
复制
localhost:3000/post/97/photos

并且他(当前用户)不能在那里创建或销毁任何东西,换句话说,他只能读取localhost:3000/post/97/

但如果当前用户是作者-他有权访问localhost:3000/post/97/photoslocalhost:3000/post/97/photos/newlocalhost:3000/post/97/photo/244/show ...

在能力上类似于: can :destroy,Photo,@photo.post.user_id => user.id //但是如何定义@photo ??或者如果你知道一个更简单的方法?

EN

回答 1

Stack Overflow用户

发布于 2012-09-21 21:44:00

您可以使用如下所示的块:

代码语言:javascript
复制
can :manage , Post  do | post |
  post.user_id == user.id
end

这意味着只有当前用户创建了帖子,才能对其进行管理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12530072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档