私はモンゴイド基準で定義された能力を持っています。それはモンゴイド基準セレクターにデータを入力していません。
can :manage, Number, :issuer_id.in => user.owner_of.map{ |p| p.id }
戻り値
-> Number.accessible_by(Ability.new(user))
=> #<Mongoid::Criteria
selector: {},
options: {},
class: Number,
embedded: false>
同じ基準で直接mongoidにクエリを実行した場合
-> Number.where(:issuer_id.in => user.owner_of.map{ |p| p.id })
=> #<Mongoid::Criteria
selector: {:issuer_id=>{"$in"=>[BSON::ObjectId('4f9ae0f1e1607c7a67000002')]}},
options: {},
class: Number,
embedded: false>
能力インスタンスは戻ります...
-> Ability.new(user)
=> #<Ability:0x007f8c9d0c1030 @rules=[
#<CanCan::Rule:0x007f8c9a5b0210
@match_all=false,
@base_behavior=true,
@actions=[:manage],
@subjects=[Number],
@conditions={issuer_id=>[BSON::ObjectId('4f9ae0f1e1607c7a67000002')]},
@block=nil
>
]>
私は自分の能力をさまざまな方法で定義しようとしました
can :manage, Number, :issuer => { :owner_id => user.id }
can :manage, Number, :issuer_id.in => user.owner_of.map{ |p| p.id }
can :manage, Number, :issuer_id => { "$in" => user.owner_of.map{ |p| p.id }}