J'ai mes Rails 5 ApplicationRecord
:Rails 5: Meilleure façon de remplacer le mappage de noms entre les modèles et les noms de tables SQL?
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
et un tas de modèles qui héritent de ApplicationRecord
. Maintenant, je voudrais que chaque nom de modèle soit mappé à sa table de base de données d'une manière personnalisée. Par exemple, je peux faire:
class MyModel < ApplicationRecord
self.table_name = 'MY_MODELS' # overrides default 'my_models'
end
Mais puisque toutes les applications sont prévisibles, je pensais que je voudrais juste faire dans la classe de base:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.table_name
self.name.underscore.pluralize.upcase
end
end
... mais cela ne fonctionne pas , même si les méthodes de classe technique doivent être héritées par la sous-classe. (? Toute idée pourquoi)
J'ai aussi essayé d'ajouter une méthode qui a fait quelque chose comme ceci:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.inherited(subclass)
subclass.table_name = subclass.name.underscore.pluralize.upcase
end
end
Cela ne fonctionne pas non plus. Une idée de la meilleure façon de le faire?
Je suppose que cela aurait dû marcher ou peut-être que vous avez besoin de recharger! votre serveur ou votre console pour qu'elle prenne effet. classe 'ApplicationRecord
oreoluwa