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'
on 07.08.2008 19:19
on 07.08.2008 21:03
2008/8/7 Zangief Ief <list-incoming@andreas-s.net>: > 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 Mougel http://blog.shingara.fr
on 08.08.2008 00:03
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 ?
on 08.08.2008 00:44
2008/8/8 Zangief Ief <list-incoming@andreas-s.net>: > > 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 Mougel http://blog.shingara.fr
on 08.08.2008 11:47
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.
on 08.08.2008 13:50
2008/8/8 Zangief Ief <list-incoming@andreas-s.net>: > 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 Mougel http://blog.shingara.fr
on 08.08.2008 15:14
Cyril Mougel 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.
on 08.08.2008 15:37
2008/8/8 Zangief Ief <list-incoming@andreas-s.net>: > 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 Mougel http://blog.shingara.fr
on 08.08.2008 17:42
Cyril Mougel 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 ?
on 08.08.2008 20:59
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'