Qual é a diferença entre t.references
e t.belongs_to
? Por que estamos tendo essas duas palavras diferentes? Parece-me que eles fazem a mesma coisa? Tentei algumas pesquisas no Google, mas não encontrei explicação.
class CreateFoos < ActiveRecord::Migration
def change
create_table :foos do |t|
t.references :bar
t.belongs_to :baz
# The two above seems to give similar results
t.belongs_to :fooable, :polymorphic => true
# I have not tried polymorphic with t.references
t.timestamps
end
end
end
1
Eles funcionam da mesma maneira - isso é uma coisa tão ruim? referências insere uma coluna de chave estrangeira para você. Em vez disso, você pode usar o belongs_to para tornar sua migração mais legível. Consulte guias.rubyonrails.org/migrations.html para obter mais detalhes.
—
Muffinista 17/10/11
Não estou dizendo que é uma coisa ruim. Fiquei confuso sobre se eles funcionam da mesma maneira ou de maneiras diferentes, pois não consigo encontrar documentação específica dizendo que eles funcionam da mesma maneira. http://guides.rubyonrails.org/migrations.html também não está claro sobre esse assunto.
—
Tornskaden 17/10/11
Provavelmente, isso é apenas para compatibilidade com versões anteriores e
—
bricker
references
será descontinuado e removido em uma versão futura dos trilhos. Não aceite minha palavra, é apenas um palpite.
"O outro helper é chamado de referências (também disponível como belongs_to) Na sua forma mais simples, apenas acrescenta alguns legibilidade" - a partir da guia
—
muffinista
Também aqui está o código-fonte - belongs_to é um alias de reta de referências github.com/rails/rails/blob/...
—
muffinista