ruby-on-rails – 如何使Ruby on Rails创建启用了外键的SQLite数
我是
Ruby on Rails的新手,我使用SQLite3作为我的示例项目的数据库.我试图在两个模型之间创建普通的一对多关系(例如,每个产品有一个所有者,每个所有者可以有许多产品).这很好,并且正确创建了数据库模式.但是,当我在数据库管理工具(我使用免费的SQLite Express Personal
http://www.sqliteexpert.com/download.html)中打开development.sqlite3时,我没有看到该数据库具有参照完整性.即使包含owner_id列,也没有为Product表列出外键.
我尝试通过添加选项键来更改database.yml: default: &default adapter: sqlite3 pool: 5 timeout: 5000 options: "PRAGMA foreign_keys=ON" 然后重新创建数据库: rake db:drop db:create db:migrate 这会重新创建数据库,但同样没有列出外键. 难道我做错了什么?是否有解决方案. 解决方法
默认情况下,Rails不会创建外键引用. Rails使用它在模型中从
associations派生的信息来管理外键值本身.
但是你不能在SQLite中使用它,因为SQLite不支持Rails用来创建外键的特定ALTER TABLE语句. SQLite非常有limited support for ALTER TABLE.
此外,add_foreign_key仅支持对单个列的外键引用. 如果您想学习由dbms强制执行的引用完整性的Rails,您需要a)切换到PostgreSQL或MySQL之类的东西,或者b)在迁移中执行原始SQL.使用像PostgreSQL这样的东西会更容易,主要是因为它完全支持标准的ALTER TABLE语句. 如果我是你,我不会担心dbms强制执行外键.等到你对Rails环境和Rails约定感到满意为止. The release notes for Rails 4.2或多或少地说,add_foreign_key还不能与SQLite一起使用.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |