Ruby on rails 我试图为RyanBates编写CanCan的权限规范,但出现了错误“quot;未初始化的常量能力::CanCan“;
我不认为这个问题解决了我的问题 根据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
能力并不难。我按照以下步骤编写规范:
当我尝试以下命令时
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。