Rails admin, список моделей показывает ноль при использовании cancan
У меня есть модели Owner, Shop и Item.
Owner имеет много Shops и Shops имеет много Items.
Мои способности по канкану:
can :manage, Shop, owner_id: user.id
can :manage, Item, shop: {owner_id: user.id}
Когда я открываю панель управления rails_admin, она говорит, что у меня ноль Items и страница List of Items пуста.
Однако, когда я открываю страницу магазинов, я вижу все ее элементы и могу изменить их на странице магазинов.
Когда я пишу свой код так:
can :manage, Item do |item|
item.shop.owner_id == user.id
end
Он выдает мне ошибку:
The accessible_by call cannot be used with a block 'can' definition. The SQL cannot be determined for :index Item
Почему я не могу перечислить все мои Items на Items List?
1 ответ:
Я нашел одно решение.
Мне нужно добавить дополнительное поле в мою модель
Item:field :shop_owner_id, type: StringТогда мне нужно назначить его:
before_save :set_shop_owner_id def set_shop_owner_id self.shop_owner_id = self.shop.owner.id.to_s endВ моем файле
ability.rbМне нужно было добавить следующее:can :manage, Item, shop_owner_id: user.idЭто означает, что есть какая-то ошибка, когда
rails_adminwnats индексировать все товары, которые принадлежат магазину, который принадлежит текущему владельцу. Это помогает избежать его.Не очень хорошее решение, я думаю, но работает.
Comments