Ich habe meine Anwendung von Schienen 2.3.8 auf 3.0.3 aktualisiert. Aber ich stehe vor einem Problem. Ich war mit ‚gefunden‘, aber das übergeordnete funktioniert nicht in Schienen 3:Wie überschreiben 'wo' in Schienen 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
Ich frage mich, ob es einen Weg gibt, diese Arbeit in Schienen 3 oder sogar zu machen, indem Sie wo statt.
dank
Haben Sie jemals von einem Überschreiben gehört? http://en.wikipedia.org/wiki/Method_overriding. Mein Problem besteht nicht im Upgrade. Ich habe es bereits bestanden. Mein Problem ist, als ich User.find ('irgendein Name') anrief. es nennt die übergeordnete Methode, die ich in Schienen 2 gemacht habe. aber in Schienen 3 gibt mir ein Fehler sagt: "Konnte nicht Benutzer mit ID = 'irgendein Name'" finden. weil es die übergeordnete Methode nicht sieht – Zakwan
http://www.freezzo.com/2008/05/14/override-default-find-conditions-for-model/ – Zakwan
Ja, ich weiß, welche Methode überschreiben ist. Ich habe nur angedeutet, dass es keine gute Lösung ist, um es hier zu verwenden. Ich kann nicht über einen guten Fall nachdenken, bei dem Sie wirklich die Methodenüberschreibung für die Suchmethode von ActiveRecord verwenden – lucapette