J'ai amélioré mon application des rails 2.3.8 à 3.0.3. Mais je suis confronté à un problème. J'utilisais « trouver » mais enchevêtrements ne fonctionne pas dans des rails 3:Comment remplacer «où» dans les rails 3
# override activerecord's find to allow us to find by name or id transparently
def self.find(*args)
if args.is_a?(Array) and args.first.is_a?(String) and (args.first.index(/[a-zA-Z\-_]+/) or args.first.to_i.eql?(0))
find_by_login_slug(args)
else
super
end
end
Je me demande s'il y a un moyen de faire ce travail dans des rails 3 ou même en utilisant au lieu où.
grâce
Avez-vous déjà entendu parler de dérogation? http://en.wikipedia.org/wiki/Method_overriding. mon problème n'est pas dans la mise à niveau. Je l'ai déjà passé. mon problème est quand j'ai appelé User.find ('n'importe quel nom'). il appelle la méthode prioritaire que j'ai faite dans les rails 2. mais dans les rails 3 me donne une erreur dit: "n'a pas pu trouver l'utilisateur avec l'ID = 'n'importe quel nom'". car il ne voit pas la méthode prioritaire – Zakwan
http://www.freezzo.com/2008/05/14/override-default-find-conditions-for-model/ – Zakwan
Oui, je sais quelle méthode est prioritaire. Je disais simplement que ce n'est pas une bonne solution d'essayer de l'utiliser ici. Je ne peux pas penser à un bon cas où vous avez vraiment utiliser la méthode de substitution pour la méthode find d'activationecord – lucapette