2016-08-10 1 views
0

Ich habe eine Spree-Site, wo es mehrere verschiedene Benutzerrollen gibt. Einige Kategorien von Produkten sind nur für bestimmte Benutzer verfügbar (z. B. Großhandelskunden können auf Großhandelsprodukte zugreifen). Wie würde ich das begrenzen? Ich habe versucht, es zu tunWie Produkte basierend auf Taxons und Benutzerrollen angezeigt werden

<% 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"') %>

in den Produkten unter Verwendung von teilweise, wo sie die Produkte zeigt, aber diese überschreibt die retrieve_products Methode so muss es irgendwo früher getan werden. Ich versuchte es in der /lib/spree/core/search/base.rb retrieve_products, aber das erkennt nicht spree_current_user ...

Sorry für ein Noob. Irgendwelche Tipps würden sehr geschätzt werden.

Antwort

1

Zunächst müssen Sie Erweiterung erstellen

extension guides

Nachdem unter Ihrer Neben /controllers/spree/home_controller_decorator.rb

In dieser Put-Datei erstellen:

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

Ebenso können Sie dies auch für products_controller oder andere Controller.

Verwandte Themen