Como especifico explicitamente o mapeamento de nome de tabela de um modelo no Rails?

230

Eu tenho uma classe Model chamada Countries e quero que ela seja mapeada para uma tabela de banco de dados chamada 'cc'.

Como isso é feito no Rails?

Eran Kampf
fonte

Respostas:

427

Rails> = 3.2 (incluindo Rails 4+ e 5+):

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

Trilhos <= 3.1:

class Countries < ActiveRecord::Base
  self.set_table_name "cc"
  ...
end
Zabba
fonte
É a melhor prática a especificar table_namepara cada modelo?
Sung Cho
10
@MikeC - Não. É a maneira mais simples de ser o mais breve possível e só escrever código quando substituir as convenções.
toobulkeh
@SungWonCho Não é melhor prática para especificar o nome da tabela em cada modelo, apenas usar isso quando você precisa de um nome diferente para a tabela
Thorin
137
class Countries < ActiveRecord::Base
    self.table_name = "cc"
end

No Rails 3.x, esta é a maneira de especificar o nome da tabela.

chelofm
fonte