您好我尝试使用供应商登录在spree中添加产品。我有两个与spree marketplace安装相关的宝石
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中看到supplier_id列,但是当我使用供应商登录添加新产品时,同样的错误被抛出为未经授权,我检查了数据库,supplier_id列为NULL
。
我应该在哪里进行更改,以便在spree_products中存储正确的供应商ID
答案 0 :(得分: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