activerecord-sqlserver-adapter
Ruby on Rails を使用して既存の Microsoft SQL Server に接続するためにgemを使用しています。次のようconfig\application.rb
に設定するようにファイルを変更しましたtable_name_prefix
config.active_record.table_name_prefix = 'msr.FSCR_'
Ruby on Rails で作成したすべてのテーブルがmsr
スキーマ内にあり、FSCR_
プレフィックスでグループ化されるようにします。次を使用して作成されたテーブル/足場があります
rails generate scaffold Customer name:string status:string
rake db:migrate
msr.FSCR_customers
正しいテーブルを作成しました。次に、次のようにサイトのモデルを作成しました
rails generate scaffold Site name:string addr1:string addr2:string city:string
state:string zip:string
モデル/足場が正しく生成されました。20120718221629_create_sites.rb
generate コマンドは、次のようにデータベース移行ファイルを作成しました
class CreateSites < ActiveRecord::Migration
def change
create_table :sites do |t|
t.string :name
t.string :addr1
t.string :addr2
t.string :addr3
t.string :city
t.string :state
t.string :zip
t.string :phone
t.string :fax
t.integer :created_by
t.references :customer
t.timestamps
end
add_index :sites, :customer_id
end
end
ただし、rake db:migrate
commend を実行すると、次のエラー メッセージが表示されます。
ODBC::Error: 37000 (102) [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect
syntax near '.'.: CREATE INDEX [index_msr].[FSCR_sites_on_customer_id] ON [msr].
[FSCR_sites] ([customer_id])
行をコメントアウトするとadd_index :sites, :customer_id
、テーブルがうまく作成されます。テーブルが作成されると、外部キーがそこにないことがわかります。この問題を変更/修正するにはどうすればよいですか?
アップデート
問題は見つかったと思いますが、変更方法がわかりません。テーブルプレフィックスを使用しているため、 + + {index_name}msr.FSCR_
のプレフィックスを持つインデックス名を作成しようとしているため、挿入は作成しようとしていますindex_
msr.FSCR_
[index_msr].[sites_on_customer_id]
のスキーマがないindex_msr
ため、これは失敗すると予想されます。私が本当に欲しいのは、インデックス名が
[index_msr_sites_on_customer_id]
クラス].[
のインデックス作成セクションから削除する方法はありますか?ActiveRecord