如何根据分类单元和用户角色展示产品

How to show products based on taxons & user roles

我有一个狂欢网站,其中有多个不同的用户角色。某些类别的产品仅对某些用户可用(例如,批发客户可以访问批发产品)。我将如何限制这个?我尝试使用

来做到这一点

<% if spree_current_user.has_spree_role?("wholesale") %>

<% @products = Spree::Product.find_by_sql('SELECT sp.* FROM spree_products sp LEFT JOIN spree_products_taxons spt ON spt.product_id = sp.id LEFT JOIN spree_taxons st ON spt.taxon_id = st.id WHERE st.name = "Wholesale"') %>

在显示产品的产品部分中,但这会覆盖 retrieve_products 方法,因此需要更早地在某个地方完成。我在 /lib/spree/core/search/base.rb retrieve_products 中尝试过,但这无法识别 spree_current_user...

对不起,我是个菜鸟。任何提示将不胜感激。

首先你必须创建扩展

extension guides

在你的扩展下创建/controllers/spree/home_controller_decorator.rb

在此文件中放入:

module Spree
  HomeController.class_eval do
    def index
     @retrieve_prodcuts = # type here your @products code
    end
  end
end

同样,您也可以为 products_controller 或其他控制器执行此操作。