2011-01-09 2 views
0

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

Répondre

-1

Le problème que vous faites face est une mise à niveau d'un 2.3.x rails à une application 3.0.x rails. Bien que cela puisse sembler une tâche simple, ce n'est pas le cas, surtout si vous avez une vraie application et non une application. Je vous suggère de jeter un oeil à une série de screencast de Rayn Bates, vous pouvez commencer à partir de http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1 pour obtenir une idée complète du problème que vous rencontrez.

Si vous avez seulement besoin de lire à propos de ActiveRecord nouvelle interface http://m.onkey.org/active-record-query-interface est un excellent article.

+0

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

+0

http://www.freezzo.com/2008/05/14/override-default-find-conditions-for-model/ – Zakwan

+0

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