4

我有一个问题,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:将 :index 添加到 #accessible_by 无济于事:

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

CanCanCan v1.10.1

4

0 回答 0