私は奇妙な魔法の問題を持っている!レールと外部キー
私は外部キーを使ってテーブルを作成しました(私はsparkfly-foreigner gemを使用しています)。
class CreateCourses < ActiveRecord::Migration
def change
create_table :courses do |t|
t.string :coursename,
t.integer :subject,
t.integer :theme,
t.integer :hours,
t.decimal :price,
t.foreign_key :subject, :column => :subject, :dependent => :delete
t.foreign_key :theme, :column => :theme, :dependent => :delete
t.timestamps
end
end
end
これは、端末と私のレールwebappでうまく動作します。
次に、別のテーブルを作成しています。
class CreateGroupps < ActiveRecord::Migration
def change
create_table :groupps do |t|
t.string :groupname
t.integer :courseid
t.integer :number,
t.foreign_key :course, :column => :courseid, :dependent => :delete
t.timestamps
end
end
end
魔法が始まります。私はGrouppsのWebフォームに既存のcourseidは書かず、データベースにレコードを作成します!!!私が端末を使用しているとき、私はこれを得る
rails_dev=> select * from groupps
rails_dev-> ;
id | groupname | courseid | number | created_at | updated_at
----+-----------+----------+--------+----------------------------+----------------------------
1 | 12 | | 1 | 2011-12-03 02:51:06.154261 | 2011-12-03 02:51:06.154261
(1 row)
rails_dev=> insert into groupps values (2,12,0,0); ERROR: insert or update on table "groupps" violates foreign key constraint "groupps_courseid_fkey"
DETAIL: Key (courseid)=(0) is not present in table "courses".
どのようにすることができますか?そして私が間違っているとき?私はレールやルビーでは初心者です。
ありがとうございました。私は解決策が単純でなければならず、また愚かな間違いがあることを知っていました。 – evilgeniuz
t.foreign_key ':courses'テーブル名 –