¿Cuál es la diferencia entre t.references
y t.belongs_to
? ¿Por qué estamos teniendo esas dos palabras diferentes? ¿Me parece que hacen lo mismo? Intenté algunas búsquedas en Google, pero no encontré ninguna explicación.
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
fuente
fuente
references
será desaprobado y eliminado en una versión futura de rails. No confíes en esto, es solo una suposición educada.Respuestas:
Mirando el código fuente , hacen exactamente lo mismo:
belongs_to
es un alias dereference
:Esta es solo una forma de hacer que su código sea más legible: es bueno poder realizar
belongs_to
sus migraciones cuando sea apropiado y apegarse areferences
otros tipos de asociaciones.fuente
references
es una elección ambigua para un término. Cambiaron su nombrebefore_filter
abefore_action
, lo cual fue un buen movimiento porque redujo la ambigüedad. Una ventajareferences
es que es simplemente diferente de lo que usa en el modelo, por lo que se confunde menos si está en el modelo o en la migración. Pero cualquier término que difiera satisfaría este criterio.references
es mejor término en db-level.