Rails_admin,模型列表在使用cancan时显示为零

时间:2015-07-28 09:50:10

标签: ruby-on-rails cancan rails-admin cancancan

我有模型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

为什么我无法在Items上列出所有Items List

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案。

我需要在我的Item模型中添加additinal字段:

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 wnats索引所有商品时会出现某种错误,这些商品属于属于当前所有者的商店。这有助于避免它。

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