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?

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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.