0

嗨,我尝试使用供应商登录名在狂欢中添加产品。我安装了两个与狂欢市场相关的宝石

gem 'spree_drop_ship', github: 'spree-contrib/spree_drop_ship', branch: '3-0-stable'
gem 'spree_marketplace', github: 'firman/spree_marketplace'

另外,我更新了我的能力装饰器以提供相关权限使用

if user.has_spree_role? "supplier"
        can [:admin, :manage, :index, :create, :update], Spree::Product do |product|
          product.supplier_ids.include?(user.supplier_id)
        end
end

我可以看到添加产品的表单,但是当我添加基本产品详细信息并单击创建时,它给了我Authorization Failure错误请建议我应该怎么做才能解决问题。

更新:我调试了应用程序,发现缺少一些迁移文件,当我迁移数据库时,我可以在 spree_products 中看到供应商 ID 列,但是当我使用供应商登录添加新产品时,同样的错误被抛出为未经授权,我检查了对于数据库,supplier_id 列是NULL.

我应该在哪里进行更改,以便正确的供应商 ID 存储在 spree_products

4

1 回答 1

0

该产品已创建但未与供应商关联,然后在编辑时引发授权失败,因为该产品没有供应商。

您正在使用3-0-stable分支,而该分支缺少一个重要方法。请查看2-4-stable分支并将 add_product_to_supplier 方法复制到您的 Spree::Admin::ProductsControllers。

Spree::Admin::ProductsController.class_eval do
  create.after :add_product_to_supplier

  # Newly added products by a Supplier are associated with it.
  def add_product_to_supplier
    if try_spree_current_user && try_spree_current_user.supplier?
      @product.add_supplier!(try_spree_current_user.supplier_id)
    end
  end
end
于 2016-01-24T19:07:56.937 回答