Ошибка авторизации при добавлении продукта поставщика в spree

Привет, я пытался добавить товар в веселье, используя логин поставщика. У меня есть два драгоценных камня, связанных с оживленным рынком

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 ошибка Пожалуйста, предложите, что я должен сделать, чтобы решить проблему.

Обновление: я отладил приложение и обнаружил, что некоторые файлы миграции отсутствуют, когда я перенес db, я увидел столбец supplier_id в spree_products, но когда я добавил новый продукт, используя логин поставщика, та же ошибка была выдана как неавторизованная, я проверил с базой данных столбец supplier_id был NULL,

Где я должен внести изменения, чтобы в spree_products сохранялся правильный идентификатор поставщика

1 ответ

Продукт создается, но не связан с поставщиком, а затем вызывает ошибку авторизации при редактировании, поскольку у этого продукта нет поставщика.

Вы используете стабильную ветвь 3-0, и в этой ветке отсутствует важный метод. Пожалуйста, посмотрите ветку 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
Другие вопросы по тегам