Ruby on rails schema.rb不包括:添加索引时唯一
我有以下迁移:Ruby on rails schema.rb不包括:添加索引时唯一,ruby-on-rails,rails-migrations,Ruby On Rails,Rails Migrations,我有以下迁移: class UniqueIndexOnCustomValueKeys < ActiveRecord::Migration def self.up add_index :custom_values, [:customizable_id, :customizable_type, :custom_definition_id], {:unique=>true,:name=>:cv_unique_composite} end def self.do
class UniqueIndexOnCustomValueKeys < ActiveRecord::Migration
def self.up
add_index :custom_values, [:customizable_id, :customizable_type, :custom_definition_id], {:unique=>true,:name=>:cv_unique_composite}
end
def self.down
remove_index :custom_values, :cv_unique_composite
end
end
我做错什么了吗
(Rails 3.0.8,MySql2 gem)为了适应唯一索引,您需要更改application.rb中的活动\u record.schema\u格式:
config.active_record.schema_format = :sql
这将迫使测试数据库使用db/development_structure.sql,它从数据库中获取原始sql语句,而不是ruby命令
这个问题涉及Oracle,但对于其他特定于数据库的问题(在本例中为MySql唯一索引)也存在相同的问题:请自己尝试一下
add_index :custom_values, [:customizable_id, :customizable_type, :custom_definition_id], unique: true, name: 'cv_unique_composite'
事实并非如此。我们的schema.rb中确实有许多唯一的索引,并且仍然使用rails模式格式。注意OP使用MySQL。
add_index :custom_values, [:customizable_id, :customizable_type, :custom_definition_id], unique: true, name: 'cv_unique_composite'