あなたがRailsの4でこれを持っていた場合:Rails 5が "インデックス"を "外部キー"に変更したのはなぜですか?
t.references :event, index: true
は今、あなたは使用することができ、彼らがこれを行うことを決めた理由の機能は同じままなので、私は非常に、理解していないレール5のforeign_key
の代わりindex
、どのような追加しているのはINDEXで、その列には外部キーではありません。
あなたがRailsの4でこれを持っていた場合:Rails 5が "インデックス"を "外部キー"に変更したのはなぜですか?
t.references :event, index: true
は今、あなたは使用することができ、彼らがこれを行うことを決めた理由の機能は同じままなので、私は非常に、理解していないレール5のforeign_key
の代わりindex
、どのような追加しているのはINDEXで、その列には外部キーではありません。
In Rails 5 - モデルを参照すると、foreign_key
のインデックスが自動的に作成されます。
移行APIは、Railsの5に変更されました -
Railsの5は、マイグレーションがnullではないが、自動的にタイムスタンプに追加された後に実行されたときにもかかわらずnull: false
オプションはタイムスタンプに渡されていないので、その移行APIを変更しました。
同様に、ほとんどの場合、参照される列のインデックスが必要です。だから、Rails 5はindex: true
という参照を必要としません。移行が実行されると、索引が自動的に作成されます。一例として、
- (http://blog.bigbinary.com/2016/03/01/migrations-are-versioned-in-rails-5.htmlからコピー)
あなたはrails g model Task user:references
のRailsを実行すると4は
class CreateTasks < ActiveRecord::Migration
def change
create_table :tasks do |t|
t.references :user, index: true, foreign_key: true
t.timestamps null: false
end
end
end
とレール5を生成する
class CreateTasks < ActiveRecord::Migration[5.0]
def change
create_table :tasks do |t|
t.references :user, foreign_key: true
t.timestamps
end
end
end
非常によく解答された答え。しかし、何らかの理由で参照をインデックスに登録したくない場合はどうすればよいですか?あるいは、私は 't.references:user、foreign_key:true'しか持っていなくても、それはRails 4で暗黙のうちに索引付けされましたか? ---そして今、私はなぜforeign_key:trueも省略しなかったのだろうかと思います。 –
とindex
は、(あなたの名前から判断できるように)全く異なるものです。
何も変更されていないので、まだ2つを使用できます。
these docsで、移行の関連付けを確立するための詳細を確認できます。
I正直ドンを生成しますあなたの質問を理解していない、インデックスオプションは、データベースを追加するndex、外部キー1はデータベースの外部キーを追加します。 –