在规范中使用CanCan / CanCanCan进行错误查询

时间:2015-03-06 11:39:56

标签: ruby-on-rails ruby cancan cancancan

我遇到一个问题,CanCan(过去和CanCanCan现在)在测试中为查询添加了一些奇怪的SQL代码。

我的模特:

class Company < ActiveRecord::Base
  has_many :machines,           dependent: :destroy
end

class Machine < ActiveRecord::Base
  belongs_to :company
end

我拥有CanCanCan能力:

can :manage, :all
cannot [:manage, :read], Machine
can [:manage, :read], Machine, company_id: user.company_id
# other abilities also described as cannot / can pairs (legacy code) 

如果我运行代码段:

user.company_id 
> 170
puts Machine.accessible_by(Ability.new(user)).to_sql

在开发/生产中我有:

SELECT "machines".* FROM "machines" WHERE "company_id" = 170

在规格中:

SELECT "machines".* FROM "machines"  WHERE ('t'='f')

其他技能效果很好(属于机器的模型除外)。

也许我必须添加一些其他信息 - 请问。

UPD:添加:#accessible_by的索引没有帮助:

puts Machine.accessible_by(Ability.new(user), :index).to_sql

CanCanCan v1.10.1

0 个答案:

没有答案