2

我有模型OwnerShopItem

Owner有很多ShopsShops有很多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

为什么我不能列出所有我ItemsItems List

4

1 回答 1

0

我找到了一种解决方案。

我需要在我的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_admin这意味着,当wnat 索引所有属于当前所有者的商店的商品时,会出现某种错误。这有助于避免它。

我认为不是很好的解决方案,但有效。

于 2015-07-29T05:15:10.690 回答