2017-02-06 2 views
0

J'essaye d'ajouter un rôle d'utilisateur de salesRep qui peut commander des produits du côté d'admin au nom des utilisateurs en sélectionnant les utilisateurs de la liste déroulante (même que l'admin). J'utilise le commerce spree dans des rails 5. J'ai ability_decorator app/modèles/spree/ability_decorator.rbSpree commerce avec des rôles d'utilisateur personnalisés de rails

class AbilityDecorator 
    include CanCan::Ability 
    def initialize(user) 
    if user.respond_to?(:has_spree_role?) && user.has_spree_role? ('sales_rep') 
     can [:admin, :manage], Spree::Order 
     can [:admin, :index, :show], Spree::Product 
    end 
    end 
end 

Spree::Ability.register_ability(AbilityDecorator) 

Bien qu'il n'y ait pas d'erreur, je suis en mesure d'afficher uniquement l'onglet de commande et onglet produit, attendu. Mais l'onglet Commande affiche uniquement les informations sélectionnées. Il n'affiche pas la liste déroulante des clients pour sélectionner les détails du client ou du client tels que l'adresse e-mail, le mot de passe, l'adresse, etc., qui sont tous présents dans la connexion admin. Quels changements dois-je faire pour avoir les fonctionnalités exactes comme admin login?

Répondre

-1

Il s'agit du code correct pour les rôles utilisateur personnalisés spree.

class AbilityDecorator 
    include CanCan::Ability 
    def initialize(user) 
    if user.respond_to?(:has_spree_role?) && user.has_spree_role?('admin_store') 
     can [:admin, :manage], Spree::Order 
     can [:admin, :index, :show], Spree::Product 
    end 
    end 
end 

Spree::Ability.register_ability(AbilityDecorator)