Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 rails可以执行自定义操作_Ruby On Rails_Ruby_Ruby On Rails 3_Cancan_Railscasts - Fatal编程技术网

Ruby on rails rails可以执行自定义操作

Ruby on rails rails可以执行自定义操作,ruby-on-rails,ruby,ruby-on-rails-3,cancan,railscasts,Ruby On Rails,Ruby,Ruby On Rails 3,Cancan,Railscasts,我试图阻止各种项目的编辑使用cancan发布他们自己的作品,但这并没有达到预期效果。到目前为止,其他一切都运转良好 例如: can :publish, [Article, Review] do |doc| doc.user != @user end 看法 我想你是想这么做的 cannot :publish, [Article, Review], :user_id => @user.id 这意味着,如果文章的创建者是他们,用户就不能发布文章或评论 例如,在我的应用程序中,我有一个登录

我试图阻止各种项目的编辑使用cancan发布他们自己的作品,但这并没有达到预期效果。到目前为止,其他一切都运转良好

例如:

can :publish, [Article, Review] do |doc|
  doc.user != @user
end
看法


我想你是想这么做的

cannot :publish, [Article, Review], :user_id => @user.id
这意味着,如果文章的创建者是他们,用户就不能发布文章或评论

例如,在我的应用程序中,我有一个登录的用户可以创建新问题的地方。用户可以管理自己的问题,用户可以对问题进行投票。但是,用户不能对自己的问题进行投票。这听起来熟悉吗?:)

class Ability
  include CanCan::Ability

  def initialize(user)
    @user = user || User.new # for guest
    @user.roles.each { |role| send(role) }

    if @user.roles.size == 0
      can :read, :all #for guest without roles
    end
  end
  
  def author
    can :manage, [Article, Review] do |doc|
      doc.try(:user) == @user
    end
    can :submit, [Article, Review]
  end

  def editor
    can :manage, [Article, Review]
    can :publish, [Article, Review] do |doc|
      doc.user != @user
    end
  end

  def admin
    can :manage, :all
    can [:submit, :publish, :reject], [Article, Review]
  end
end
cannot :publish, [Article, Review], :user_id => @user.id
  can [:new, :create], Question
  can :manage, Question, :user_id => user.id
  can :vote, Question
  cannot :vote, Question, :user_id => user.id