244 votes

Comment spécifier explicitement le mappage table-nom d'un modèle dans Rails ?

J'ai une classe de modèle appelée Pays et je veux qu'elle corresponde à une table de la base de données appelée 'cc'.

Comment cela se fait-il dans Rails ?

453voto

Zabba Points 26372

Rails >= 3.2 (y compris Rails 4+ et 5+) :

class Countries < ActiveRecord::Base
  self.table_name = "cc"
end

Rails <= 3.1 :

class Countries < ActiveRecord::Base
  self.set_table_name "cc"
  ...
end

0 votes

La meilleure pratique consiste-t-elle à spécifier table_name pour chaque modèle ?

12 votes

C'est la façon dont les rails sont conçus pour être aussi brefs que possible et n'écrire du code que lorsqu'il écrase les conventions.

0 votes

@SungWonCho Ce n'est pas une bonne pratique de spécifier le nom de la table sur chaque modèle, utilisez-le uniquement lorsque vous avez besoin d'un nom différent pour la table.

142voto

chelofm Points 1126
class Countries < ActiveRecord::Base
    self.table_name = "cc"
end

Dans Rails 3.x, c'est la façon de spécifier le nom de la table.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X