1. ホーム
  2. ruby-on-rails

[解決済み] railsのt.belongs_toとt.referencesの違いは何ですか?

2022-06-01 01:34:12

質問

とはどのような違いがあるのでしょうか? t.referencest.belongs_to ? なぜこの2つの単語があるのでしょうか?それは、彼らが同じことを行うように思える? いくつかの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 を使うようにしましょう。