[ruby-on-rails] 레일에서 t.belongs_to와 t.references의 차이점은 무엇입니까?

t.references과 의 차이점은 무엇입니까 t.belongs_to? 왜 우리는 그 두 단어를 가지고 있습니까? 그들이 똑같은 일을하는 것 같습니까? Google 검색을 시도했지만 설명이 없습니다.

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



답변

소스 코드를 보면 똑같은 일 belongs_to을합니다 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

이는 코드를 더 읽기 쉽게 만드는 방법 일뿐입니다. belongs_to적절할 때 마이그레이션을 추가 references하고 다른 종류의 연결을 고수 할 수 있다는 것이 좋습니다 .


답변