Ich verwende Rails 4 und SQLite. Ich versuche, foreing Schlüssel zu meiner indicators
Tabelle hinzuzufügen. Bitte beachten Sie meinen Code untenFremdschlüssel in Schienen 4
class Indicator < ActiveRecord::Base
belongs_to :objetive
belongs_to :responsible, class_name: "Person"
end
Das Migrationsskript:
class AddFksToIndicator < ActiveRecord::Migration
def change
add_reference :indicators, :objective, index: true
add_reference :indicators, :responsible, index: true
end
end
wenn die Migration laufen alle in Ordnung ist, so habe ich versucht, in der Konsole:
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
Zu meiner Überraschung der Indikator wurde gespeichert und es gibt keine obective
mit ID = 0.
Schließlich überprüfte ich die Anzeige rs Tabellenschema und ich bekomme:
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");
Warum gibt es keine Fremdschlüssel auf objective_id
und responsible_id
ist? Mache ich etwas falsch?