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 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
En regardant le code source , ils font exactement la même chose - belongs_to
est un alias de reference
:
def references(*args)
options = args.extract_options!
polymorphic = options.delete(:polymorphic)
args.each do |col|
column("#{col}_id", :integer, options)
column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
end
end
alias :belongs_to :references
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 respectez references
pour d'autres types d'associations.