die effizienter/besser in einer Rails-Anwendung ist:Definieren von Klassenmethoden basierend auf Datenbankinhalte - Leistung
class Foo < ApplicationRecord
Foo.pluck(:name).each do |name|
define_singleton_method(name) { Foo.find_by(name: name) }
end
end
oder Ausführung des Codes in einem Initialisierer (config/initializers/foo.rb
):
Foo.pluck(:name).each do |name|
Foo.define_singleton_method(name) { Foo.find_by(name: name) }
end
oder vielleicht etwas anderes?
Hinweis: Foo
Instanzen werden nur einmal in einem Initialisierer erstellt. Sie werden von keinem Benutzer in der Anwendung geändert.
Ich tue dies für jeden Foo
Rekord
def self.bar
find_by(name: 'bar')
end
Schreiben zu vermeiden.
BTW: Die Singleton-Methode erstellt eine neue Foo-Instanz jedes Mal, wenn die Methode aufgerufen wird. Betrachte 'Foo.each {| e | define_singleton_method (e.name) {e}} '. – sschmeck
Ich bin immer noch am kämpfen, um zu sehen, warum Sie dies tun möchten, es sei denn, Sie haben eine sorgfältige Kontrolle über die Datenbankwerte Sie können am Ende wichtige Methoden überschreiben. – max