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

230

J'ai une classe Model appelée Countries et je veux qu'elle mappe sur une table DB appelée 'cc'.

Comment cela se fait-il dans Rails?

Eran Kampf
la source

Réponses:

427

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
Zabba
la source
Est-ce la meilleure pratique de spécifier table_namepour chaque modèle?
Sung Cho
10
@MikeC - Non. C'est le moyen le plus court d'être le plus court possible et d'écrire du code uniquement lorsqu'il écrase les conventions.
toobulkeh
@SungWonCho Il n'est pas recommandé 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
Thorin
137
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.

chelofm
la source