Ошибка авторизации при добавлении продукта поставщика в 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