Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 我试图为RyanBates编写CanCan的权限规范,但出现了错误“quot;未初始化的常量能力::CanCan“;_Ruby On Rails_Ruby On Rails 4_Rspec_Cancan - Fatal编程技术网

Ruby on rails 我试图为RyanBates编写CanCan的权限规范,但出现了错误“quot;未初始化的常量能力::CanCan“;

Ruby on rails 我试图为RyanBates编写CanCan的权限规范,但出现了错误“quot;未初始化的常量能力::CanCan“;,ruby-on-rails,ruby-on-rails-4,rspec,cancan,Ruby On Rails,Ruby On Rails 4,Rspec,Cancan,我不认为这个问题解决了我的问题 根据CanCan的说法,测试能力并不难。我按照以下步骤编写规范: 当我尝试以下命令时 bundle exec rspec spec/cancan/ability.rb 我得到以下错误 /projects/ATS/app/models/ability.rb:2:in `<class:Ability>': uninitialized constant Ability::CanCan (NameError) from /home/shiv

我不认为这个问题解决了我的问题

根据CanCan的说法,测试
能力并不难。我按照以下步骤编写规范:

当我尝试以下命令时

bundle exec rspec spec/cancan/ability.rb 
我得到以下错误

/projects/ATS/app/models/ability.rb:2:in `<class:Ability>': uninitialized constant Ability::CanCan (NameError)
        from /home/shiva/projects/ATS/app/models/ability.rb:1:in `<top (required)>'
        from /home/shiva/projects/ATS/spec/cancan/ability.rb:3:in `<top (required)>'
from /home/shiva/.rvm/gems/ruby-2.1.1/gems/cancan-1.6.10/lib/cancan.rb:1:in `<top (required)>'
        from /home/shiva/projects/ATS/spec/rails_helper.rb:14:in `<top (required)>'
        from /home/shiva/projects/ATS/spec/cancan/ability.rb:1:in `<top (required)>'
models/ability.rb中的代码片段

require 'rails_helper'

RSpec.describe Ability, type: :model do
  subject(:ability) {Ability.new(user)}
  let(:user) {nil}
  context 'Logged in as CSA' do
    let(:org) {create(:organization)}
    let(:user) {create(:user, organization: org, role_ids: [Role::ROLE_CSA])}
    describe 'Not Permitted' do
      it 'to visit /admins' do
          it {is_expected.to be_able_to(:manage, Workflow.new)}
      end

    end
  end
end
class Ability
  include CanCan::Ability

  def initialize(user, url, admin_session_id, my_applicant_id)
    if user.present?
      user.roles[0].permissions_by_organization(user).each do |permission|
        case permission.subject_class
组件的版本详细信息
  • Rails 4.0.4
  • rspec核心(3.1.7)
  • rspec期望值(3.1.2)
  • rspec模拟(3.1.3)
  • rspec导轨(3.1.0)
  • rspec支持(3.1.2)
  • 坎坎(1.6.10)

    • 我的问题得到了答案

      问题是
      spec
      文件的
      filename
      应该是
      spec/cancan/ability\u spec.rb
      但它是
      spec/cancan/ability.rb

      我应该调用
      bundle exec rspec spec/cancan/ability\u spec.rb

      require 'rails_helper'
      
      RSpec.describe Ability, type: :model do
        subject(:ability) {Ability.new(user)}
        let(:user) {nil}
        context 'Logged in as CSA' do
          let(:org) {create(:organization)}
          let(:user) {create(:user, organization: org, role_ids: [Role::ROLE_CSA])}
          describe 'Not Permitted' do
            it 'to visit /admins' do
                it {is_expected.to be_able_to(:manage, Workflow.new)}
            end
      
          end
        end
      end
      
      class Ability
        include CanCan::Ability
      
        def initialize(user, url, admin_session_id, my_applicant_id)
          if user.present?
            user.roles[0].permissions_by_organization(user).each do |permission|
              case permission.subject_class
      

      有关更多详细信息,请访问此链接

      ,您可能希望尝试Rails 4。这是CanCan的延续版本,因为它已经过时了。我本来会的,但我目前正在执行一个运行多年的项目,所以我不允许升级到CanCanCan。