我应该将"PRAGMA FOREIGNS KEYS = ON;"
放在rails 4.0中?
我知道它的连接设置所以我必须在任何时候删除某些东西时把它放到轨道上,但我不知道把它放在哪里。我在选项中尝试使用database.yml,但它无法正常工作。无法谷歌在哪里放置它。我想让它进行级联删除工作。
答案 0 :(得分:1)
语法是这样的:
drop table if exists db_name.table_name
if存在和db_name。零件是可选的。那里没有CASCADE,所以SQLite在使用DROP TABLE时根本不支持CASCADE,你无法做任何事情来添加它(当然,除非你想破解SQLite C源并自己添加它)。使用SQLite时必须接受某些限制,这是其中之一。
如果要对SQLite和MySQL使用一次迁移,则必须检查正在使用的数据库并执行适当的SQL或查找适用于所有数据库的内容(即手动执行CASCADE)。检查您正在使用的数据库的简单方法是:
case connection
when ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
# PostgreSQL things go here
when ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
# MySQL things go here
when ActiveRecord::ConnectionAdapters::SQLiteAdapter
# SQLite things go here
...
end