IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Tutoriels log in


Sujet :

Ruby on Rails

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut Tutoriels log in
    Bonjour le forum,
    Je serais a la recherche d'un tutoriel ou article expliquant comment gerer la notion d'utilisateur (nom usager, mot de passe) et de session(ouverture et fermeture de session). Si c'etait possible de l'avoir en francaism je ne dirais pas non

    merci et a bientot

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Perso j'utilise restful_authentication, très simple à mettre en oeuvr. J'ai pas de ressources en FR sous la main, mais y a un railcast disponible ici qui explique très bien comment s'en servir :
    http://railscasts.com/episodes/67

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Bonjour tout le monde,

    Je te remercie SekYo pour le tutoriel. J'ai reussi a le mettre en place relativement facilement, c'est cool

    Maintenant, j'ai mis un observer sur une de mes tables et lorsqu'un changement est fait a cette table, j'aimerais que le nom de l'utilsateur courant soit enregistre dans une autre table.
    voici mon code:

    observer:

    class ProduitObserver < ActiveRecord::Observer
    def after_save(produit)
    @user= current_user
    Audit.create({:action=>produit.etat, :initiale=> @user.login, :produit_id=>produit.id})
    end
    end

    la methode current_user est dans la librairie authenticated_system.rb mais apparement je ne peux pas l'utiliser, j'obtiens une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined local variable or method `current_user' for #<ProduitObserver:0x4762d80>
    Est ce qu'il y a une facon particuliere d'appeler une fonction dans un observer?

    merci pour vos reponse?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Tu as essayé de faire un include AuthenticatedSystem dans ta classe observer ?

    Je n'ai aucune idée de la façon dont les observers fonctionnent, mais j'imagine qu'ils ne peuvent pas utiliser des méthodes sorties de nulle part (et les controllers non plus, d'où le include dans ApplicationController).
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    salut tout le monde:

    Tu as essayé de faire un include AuthenticatedSystem dans ta classe observer ?
    Taum, je pensais que c'etait effectivement une excellente idee car je ne l'avais fait malheureusement lorsque j'essaye de demarrer mon serveur j'ai un joli message d'erreur et le serveur ne boot pas:

    => Booting WEBrick...
    I:/projet programmation/ROR/stock-aptana-travail/lib/authenticated_system.rb:95:in `send': undefined method `helper_method' for ProduitObserver:Class (NoMethodError)
    from I:/projet programmation/ROR/stock-aptana-travail/lib/authenticated_system.rb:95:in `included'
    from I:/projet programmation/ROR/stock-aptana-travail/app/models/produit_observer.rb:3:in `include'
    from I:/projet programmation/ROR/stock-aptana-travail/app/models/produit_observer.rb:3
    from C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:203:in `load_without_new_constant_marking'
    from C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:203:in `load_file'
    from C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:342:in `new_constants_in'
    from C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:202:in `load_file'
    from C:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:94:in `require_or_load'
    ... 26 levels...
    from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
    from ./script/server:3
    from -e:4:in `load'
    from -e:4
    si je clique sur le lien voila la ligne ou cela pose probleme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     # Inclusion hook to make #current_user and #logged_in?
        # available as ActionView helper methods.
        def self.included(base)
          base.send :helper_method, :current_user, :logged_in?
        end
    Peut etre que cet appel ne peut pas se faire depuis un observer?

    merci de vos remarques pour me depatouiller de cela.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    J'ai pas encore utilisé les Observers avec RestfullAuth.
    Pourquoi ne créé tu pas un projet bidon en essayant d'ajouter le plugin avec l'option --include-activation ? Dans ce dernier cas le plugin créé un observer pour la vérification par email, tu pourras ainsi voir comme il l'utilise non ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par SekYo Voir le message
    J'ai pas encore utilisé les Observers avec RestfullAuth.
    Pourquoi ne créé tu pas un projet bidon en essayant d'ajouter le plugin avec l'option --include-activation ? Dans ce dernier cas le plugin créé un observer pour la vérification par email, tu pourras ainsi voir comme il l'utilise non ?
    J'ai essaye de faire un projet bidon mais ds l'observer je n'ai absolument rien d'ecrit dedans. Une belle page blanche. J'ai fouille sur le net et j'ai trouve ceci

    Comme tu peux le voir dans l'observer il passe l'objet user en parametre. Je ne vois pas comment ni quand je pourrais le passer en parametre.

    comme mon observer se lance apres le "save", il recoit l'objet en parametre.

    controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def ouvrir
        @pstandard = Pstandard.find(params[:id])
        @pstandard.etat = 'ouvert'
        @pstandard.save
        redirect_to :action => 'show', :id =>@pstandard
      end
    observer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    lass ProduitObserver < ActiveRecord::Observer
     
     
      def after_save(produit)
        Audit.create({:action=>produit.etat, :produit_id=>produit.id})
      end
    end
    Je ne sais pas trop quand je pourrais lui passer mon user.

    merci

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Tiens, http://www.zorched.net/2007/05/29/ma...ruby-on-rails/
    Je pense que ça va répondre à ta question Par contre la solution proposée est un peu hum.... dégeu

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par SekYo Voir le message
    Tiens, http://www.zorched.net/2007/05/29/ma...ruby-on-rails/
    Je pense que ça va répondre à ta question Par contre la solution proposée est un peu hum.... dégeu
    Merci SekYo,

    j'avais deja vu ce tutoriel mais je ne m'y etais pas attarde dans la mesure ou j'utilse WEBrick. Je me demande si cela change quelquechose au niveau du thread.

    Je vais regarder ca ce soir, le decalage etant un facteur important, et essayer de voir ce que je peux adapter.

    par contre Je me demande ce a quoi correspond ":helper_method" dans le module AutheticatedSystem?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Inclusion hook to make #current_user and #logged_in?
        # available as ActionView helper methods.
        def self.included(base)
          base.send :helper_method, :current_user, :logged_in?
        end

    apparement c'est ce qui me pose un probleme lorsque passe ce module dans mon observer via include.

    merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par SekYo Voir le message
    Tiens, http://www.zorched.net/2007/05/29/ma...ruby-on-rails/
    Je pense que ça va répondre à ta question Par contre la solution proposée est un peu hum.... dégeu

    Salut tout le monde, j'ai essaye de suivre le tutoriel que tu m'as envoye SekYo mais j'ai le meme genre d'erreur qu'avec AuthenticatedSystem.

    En fait des que je mets "include UserInfo" (comme dans le tutoriel), j'ai comme erreur:
    undefined local variable or method `UserInfo' for #<ProduitObserver:0x4762d80
    J'ai bien cherche sur le net et je n'ai obsolument rien trouve sur les observer.

    J'avais aussi pense a mettre mon objet current_user dans l'objet qui est passe en paramettre dans mon observer.

    Le probleme est que je ne sais pas comment ajouter une variable a un objet quand cette variable n'est pas dans la table associee. Je ne sais pas si je suis clair .

    Faire quelquechose du genre
    observer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Class ProduitObserver < ActiveRecord::Observer
     
     
      def after_save(produit)
        Audit.create({:action=>produit.etat, :initiale=>produit.user.login, :produit_id=>produit.id})
      end
    end
    Mon probleme est que la table produits n'a pas de colonne user (et je ne veux pas qu'elle en ait), du coup comment ajouter une variable user a produit juste le temps de l'observer?

    Si qualqu'un a une solution, je suis preneur
    Merci

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Salut tout le monde,

    apres moult recherches et tentatives, j'ai decide de faire autrement.
    dans mon model produit je declare une variable et dans mon controller j'assigne ma variable avec l'objet user. de ce fait lorsque l'observer est appele le user est dans l'objet produit. Hop ni vu, ni connu.

    model:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Produit < ActiveRecord::Base
      has_many :reference_achat
     
      def user  
        return @user
      end
     
      def user=(current_user)
        @user = current_user
      end
    end
    controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def ouvrir
        @pstandard = Pstandard.find(params[:id])
        
        if @pstandard.etat != 'ferme'
          @pstandard.etat = 'ouvert'
          @pstandard.user = current_user
          @pstandard.save
        end
    observer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class ProduitObserver < ActiveRecord::Observer
      def after_save(produit)
        Audit.create({:action=>produit.etat, :initiale=>produit.user.initials, :produit_id=>produit.id})
      end
    end
    et voila ca marche nickel

    merci a tous pour vos reponses mais je sens que l'on se reforumera tres bientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les meilleurs cours et tutoriels C++
    Par Community Management dans le forum C++
    Réponses: 1
    Dernier message: 13/05/2015, 13h50
  2. Réponses: 0
    Dernier message: 24/06/2014, 11h09
  3. Réponses: 3
    Dernier message: 03/12/2013, 15h54
  4. Outils, cours et NOUVEAUX tutoriels pour Borland C++Builder
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 10
    Dernier message: 12/03/2006, 22h33
  5. F.A.Q, Doc, cours, tutoriels sur JBuilder
    Par Ricky81 dans le forum JBuilder
    Réponses: 0
    Dernier message: 14/03/2002, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo