У меня есть эта часть кода, которая определяет разрешения пользователя CanCan, но я не понимаю, для чего нужны условия внутри блока?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?
. Что это?