Mysql Rails和引用完整性
我想知道是否可以编写迁移而不是以下原始SQL语句:Mysql Rails和引用完整性,mysql,sql,ruby-on-rails,referential-integrity,Mysql,Sql,Ruby On Rails,Referential Integrity,我想知道是否可以编写迁移而不是以下原始SQL语句: execute <<-SQL ALTER TABLE records ADD CONSTRAINT fk_records_domains FOREIGN KEY (domain_id) REFERENCES domains(id) ON DELETE CASCADE SQL 根据以下命令执行: 活动记录方式声称智能属于您的模型,而不是数据库。因此,诸如触发器或外键约束之类的特性并没有被大量使用,这些特性
execute <<-SQL
ALTER TABLE records
ADD CONSTRAINT fk_records_domains
FOREIGN KEY (domain_id)
REFERENCES domains(id) ON DELETE CASCADE
SQL
根据以下命令执行:
活动记录方式声称智能属于您的模型,而不是数据库。因此,诸如触发器或外键约束之类的特性并没有被大量使用,这些特性将一些智能推回到数据库中
尽管Active Record不提供任何工具来直接使用这些功能,但execute方法可用于执行任意SQL。您还可以使用一些插件,比如将外键支持添加到活动记录中(包括在db/schema.rb中转储外键的支持)
外国人的添加外键
和删除外键
可能会按照你的要求做,但我没有任何直接的经验。根据:
活动记录方式声称智能属于您的模型,而不是数据库。因此,诸如触发器或外键约束之类的特性并没有被大量使用,这些特性将一些智能推回到数据库中
尽管Active Record不提供任何工具来直接使用这些功能,但execute方法可用于执行任意SQL。您还可以使用一些插件,比如将外键支持添加到活动记录中(包括在db/schema.rb中转储外键的支持)
外国人的添加外键
和删除外键
可能会满足您的要求,但我没有任何直接的经验。对于任何正在寻找解决方案的人,这里是迁移和回滚工作的示例:
def up
change_table :records do |t|
t.foreign_key :domains, :dependent => :delete
end
change_table :cryptokeys do |t|
t.foreign_key :domains, :dependent => :delete
end
change_table :domainmetadata do |t|
t.foreign_key :domains, :dependent => :delete
end
end
def down
change_table :records do |t|
t.remove_foreign_key :domains
end
change_table :cryptokeys do |t|
t.remove_foreign_key :domains
end
change_table :domainmetadata do |t|
t.remove_foreign_key :domains
end
end
对于任何正在寻找解决方案示例的人来说,这就是迁移及其回滚工作:
def up
change_table :records do |t|
t.foreign_key :domains, :dependent => :delete
end
change_table :cryptokeys do |t|
t.foreign_key :domains, :dependent => :delete
end
change_table :domainmetadata do |t|
t.foreign_key :domains, :dependent => :delete
end
end
def down
change_table :records do |t|
t.remove_foreign_key :domains
end
change_table :cryptokeys do |t|
t.remove_foreign_key :domains
end
change_table :domainmetadata do |t|
t.remove_foreign_key :domains
end
end