【发布时间】:2011-12-03 03:33:17
【问题描述】:
我在 Rails 中遇到了愚蠢的魔法问题!
所以,我用外键创建了表(我正在使用 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
它在终端和我的 rails 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".
这怎么可能?当我错了?我对 rails 和 ruby 太陌生了。
【问题讨论】:
标签: ruby-on-rails ruby postgresql foreign-keys