В моем приложении Rails 5 я использую CanCanCan.Мне было интересно, как правильно обращаться с новым действием и вложенными условиями.
Если у меня есть простое условие и я вызываю новое действие, оно инициирует объект с этим условием:
can :manage, Product, :discontinued => false
Что приводит к:
@product = Product.new(:discontinued => false)
https://github.com/ryanb/cancan/wiki/authorizing-controller-actions
Теперь, если у меня есть вложенные условия, такие как:
can :manage, Company, agency: { platform_id: user.platform_id }
CanCanCan, конечно, не может инициироватьс установленным агентством, но это все же может позволить мне создать новую компанию, где я затем выберу агентство и при создании проверю, принадлежит ли агенства platform_id пользователю.Это было бы идеальным поведением.Но вместо этого он даже не позволяет мне вызывать новый метод, но вызывает ошибку.
Я не думаю, что это так редко, когда работают с вложенными условиями и новым методом, но не может найти какую-либо информацию оэто во время моего обширного поиска.