CanCan のユーザー権限を定義するこのコードがありますが、ブロック内の条件が何のためにあるのかわかりません。
class Ability
include CanCan::Ability
def initialize(user)
user.permissions.each do |permission|
can permission.action.to_sym,
permission.thing_type.constantize do |thing|
thing.nil? || permission.thing_id.nil? || permission.thing_id == thing.id
end
end
end
end
したがって、このコード行は私を悩ませています:
permission.thing_type.constantize do |thing|
thing.nil? || permission.thing_id.nil? || permission.thing_id == thing.id
end
複雑な条件を定義するためにブロックが使用されていることを理解しています permission.thing_id == thing.id
。選択したオブジェクトに対してのみアクセス許可が付与されるようにブロックが存在すると思いますが、その目的はわかりません。それは thing.nil? || permission.thing_id.nil?
何のためですか?