У меня дурацкая проблема с магией в рельсах!
Итак, я создал таблицу с внешним ключом (я использую камень sparkfly-foreigner).
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
Этопрекрасно работает в терминале и в моем приложении rails.
Затем я создаю другую таблицу.
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, и он создает запись в базе данных !!!Когда я использую терминал, я получаю это
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".
Как это могло быть возможно?А когда я ошибаюсь?Я слишком новичок в рельсах и рубине.