Quelle est la différence entre t.references
et t.belongs_to
? Pourquoi avons-nous ces deux mots différents? Il me semble qu'ils font la même chose? J'ai essayé une recherche sur Google, mais je n'ai trouvé aucune explication.
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
la source
la source
references
sera obsolète et supprimé dans une prochaine version de rails. Ne me croyez pas sur parole, c'est juste une supposition éclairée.Réponses:
En regardant le code source , ils font exactement la même chose -
belongs_to
est un alias dereference
:C'est juste un moyen de rendre votre code plus lisible - c'est bien de pouvoir mettre
belongs_to
dans vos migrations le cas échéant, et de s'en tenir àreferences
d'autres types d'associations.la source
references
est un choix ambigu pour un terme. Ils ont renommébefore_filter
enbefore_action
, ce qui était une bonne décision car cela réduisait l'ambiguïté. L'un des avantagesreferences
est qu'il est simplement différent de ce que vous utilisez dans le modèle, de sorte que vous êtes moins confus si vous êtes dans le modèle ou dans la migration. Mais tout terme différent satisferait à ce critère.references
est un meilleur terme au niveau de la base de données.