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
ruby-on-rails
rails-migrations
Tornskaden
fonte
fonte
references
será descontinuado e removido em uma versão futura dos trilhos. Não aceite minha palavra, é apenas um palpite.Respostas:
Observando o código fonte , eles fazem exatamente a mesma coisa -
belongs_to
é um alias dereference
:Essa é apenas uma maneira de tornar seu código mais legível - é bom poder fazer
belongs_to
as migrações quando apropriado e seguirreferences
outros tipos de associações.fonte
references
é uma escolha ambígua para um termo. Eles renomearambefore_filter
parabefore_action
, o que foi uma boa jogada porque reduziu a ambiguidade. Uma vantagemreferences
é que ele é simplesmente diferente do que você usa no modelo, para que você fique menos confuso se estiver no modelo ou na migração. Mas qualquer termo que diferir satisfaria esse critério.references
é um termo melhor no nível de banco de dados.