我有一个问题,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