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?

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

É 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.