Ich habe meine Rails 5 ApplicationRecord
:Rails 5: Beste Möglichkeit, Namenszuordnung zwischen Modellen und SQL-Tabellennamen zu überschreiben?
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
und eine Reihe von Modellen, die von ApplicationRecord
erben. Nun möchte ich, dass jeder Modellname individuell auf seine Datenbanktabelle abgebildet wird. Zum Beispiel kann ich tun:
class MyModel < ApplicationRecord
self.table_name = 'MY_MODELS' # overrides default 'my_models'
end
Aber da alle Zuordnungen vorhersehbar sind, ich dachte, ich würde in der Basisklasse nur das tun:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.table_name
self.name.underscore.pluralize.upcase
end
end
... aber das hat nicht funktioniert , obwohl technisch Klassenmethoden von der Unterklasse geerbt werden sollten. (? Jede Idee, warum)
Ich habe auch versucht, ein Verfahren hinzufügen, die so etwas wie dies taten:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.inherited(subclass)
subclass.table_name = subclass.name.underscore.pluralize.upcase
end
end
Dies entweder nicht funktioniert hat. Irgendeine Idee von dem besten Weg, dies zu tun?
Ich denke, das hätte funktionieren sollen oder vielleicht müssen Sie neu laden! Ihr Server oder Ihre Konsole, damit sie wirksam wird. 'Klasse ApplicationRecord
oreoluwa