Bonjour,
Je souhaiterais grouper proprement un certain nombre d’action au sein
d’un fichier module, et pouvoir appeler ses actions depuis un contrôleur
ou un modèle.
Selon vous, quel serait le meilleur endroit pour ce fichier, et comment
pourrais-je faire pour l’inclure dans tous les contrôleurs et modèles ?
Et enfin, est-ce que l’appelle d’une action (appartenant au module) se
fait de la même façon depuis un contrôleur et depuis un modèle ?
Merci beaucoup pour vos lumières,
Zang’
2008/8/7 Zangief I. [email protected]:
fait de la même façon depuis un contrôleur et depuis un modèle ?
Merci beaucoup pour vos lumières,
Normalement si tu met des méthodes dans un module et que tu inclues le
module dans la classe à ce moment là les méthodes appartiennent aussi
à la classe donc elles pourront être appelé. Il n’y a strictement
aucun changement par rapport à un comportement de classe normale de
Ruby
–
Cyril M.
Je viens d’essayé de placer toute les méthodes dans un modèle, mais je
n’arrive pas à les appeler depuis un contrôleur… C’est faisable ?
Voici l’ensemble des actions dont j’aurais besoin, que j’envisage de
placer dans le modèle Person :
class Person < ActiveRecord::Base
Note : password et password_confirmation sont des champs virtuels.
def password
end
def password_confirmation
end
def password=(password)
self.salt = hash(Time.now)
self.shadow = shadow(password)
end
def hash(string)
Digest::SHA1.hexdigest(string)
end
def shadow(password)
hash(self.salt + password)
end
def is_valid?(password)
self.shadow == shadow(password)
end
end
Cependant, ma problématique c’est que je voudrais pouvoir appeler
certaines actions comme “is_valid?” depuis le contrôleur Session (avant
d’ouvrir une session) sans dupliquer de code. Et je ne sais pas si cela
est possible.
2008/8/8 Zangief I. [email protected]:
Je viens d’essayé de placer toute les méthodes dans un modèle, mais je
n’arrive pas à les appeler depuis un contrôleur… C’est faisable ?
Normalement tu devrais avoir accès au model dans tes controlleurs.
Sans code on peux pas savoir ce que tu veux dire. Entre ton
interprétation et la notre il ne s’agit pas toujours de la même chose.
–
Cyril M.
2008/8/8 Zangief I. [email protected]:
end
def shadow(password)
d’ouvrir une session) sans dupliquer de code. Et je ne sais pas si cela
est possible.
Oula, j’avais pas compris que c’était dans le modèle que tu voulais
mettre ça. Ca c’est pas propre du tout. Je pensais que tu voulais
faire un module.
Je te déconseille donc très très très vivement de faire ça.
–
Cyril M.
2008/8/8 Zangief I. [email protected]:
de la même façon depuis un contrôleur et depuis un modèle ?
à mettre dans un /lib/, après le mieux est que tu t’amuses à tester.
Tu passes plus de temps à attendre ma réponse que si tu avais tout
simplement testé.
–
Cyril M.
Cyril M. wrote:
Oula, j’avais pas compris que c’était dans le modèle que tu voulais
mettre ça. Ca c’est pas propre du tout. Je pensais que tu voulais
faire un module.
J’aimerais bien, mais quel serait le meilleur endroit pour stocker un
tel module, comment
pourrais-je faire pour l’inclure dans des contrôleurs et modèles, et,
enfin, est-ce que l’appelle d’une action (appartenant au module) se fait
de la même façon depuis un contrôleur et depuis un modèle ?
Merci à nouveau.
Cyril M. a écrit :
à mettre dans un /lib/, après le mieux est que tu t’amuses à tester.
Tu passes plus de temps à attendre ma réponse que si tu avais tout
simplement testé.
restful_authentication (et son prédécesseur) utilise lib/ et un include
dans
ApplicationController, tu peut te base sur cela.
Par contre le fait de vouloir inclure un même module dans ses
contrôleurs et
ses modèles me parait bizarre et peu conventionnel ?
Merci à vous. Effectivement ce que j’avais prévu de faire n’était pas
très net. En ayant regardé un peu le module de restful_authentication,
j’ai mieux compris comment procéder.
Bonne soirée,
Z’