1
我必須創建一個遷移來執行數據庫級別驗證。遷移:索引遷移的名稱太長
class DataBaseLevelValidation < ActiveRecord::Migration
def change
add_index :benefits_business_changes, [:benefit_id, :business_change_id], :unique => true
end
end
我的問題是,當我嘗試運行rake db:migration
我有這樣的錯誤:
Index name 'index_benefits_business_changes_on_benefit_id_and_business_change_id' on table 'benefits_business_changes' is too long;
the limit is 62 characters/Users/mariocardoso/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/schema_statements.rb:797:in `add_index_options'
但是,如果我將名稱更改爲更短的版本,我得到這個:
SQLite3::SQLException: no such table: main.benefits_businessc: CREATE UNIQUE INDEX "index_benefits_businessc_on_benefit_id_and_business_change_id" ON "benefits_businessc"
我該如何克服這個問題?
我看到的唯一方法是將'business_change'模型更改爲更短的名稱(模型,視圖,遷移... ...所有內容)。
有沒有什麼辦法可以在沒有由長名稱引起的錯誤的情況下運行此遷移?
請注意,如果您在創建初始遷移時瞭解索引,則可以直接在't.references'調用中指定索引名稱 - > http://stackoverflow.com/questions/28727240/migrations-t-references -doesnt-allow-index-name-to-be-specified。 – Felix 2015-08-05 07:13:55