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