6

Rails 4 と SQLite を使用しています。テーブルにフォアキーを追加しようとしていindicatorsます。以下の私のコードを見てください

class Indicator < ActiveRecord::Base
  belongs_to :objetive
  belongs_to :responsible, class_name: "Person"

end

移行スクリプト:

class AddFksToIndicator < ActiveRecord::Migration
  def change
      add_reference :indicators, :objective, index: true
      add_reference :indicators, :responsible, index: true
  end
end

移行を実行するとすべて問題ないので、コンソールで試しました:

2.0.0p247 :002 > i = Indicator.new
 => #<Indicator id: nil, name: nil, created_at: nil, updated_at: nil, objective_id: nil, responsible_id: nil> 
2.0.0p247 :002 > i.objective_id = 0
2.0.0p247 :003 > i.save

驚いたことに、インジケーターは保存されていobectiveて、id = 0 のインジケーターはありません。

最後に、指標テーブルのスキーマを確認したところ、次のようになりました。

CREATE TABLE "indicators" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "objective_id" integer, "responsible_id" integer);
CREATE INDEX "index_indicators_on_objective_id" ON "indicators" ("objective_id");
CREATE INDEX "index_indicators_on_responsible_id" ON "indicators" ("responsible_id");

objective_idとに外部キー制約がないのはなぜresponsible_idですか? 私は何か間違ったことをしていますか?

4

2 に答える 2