2

既存のレガシーデータベースに接続しているため、それらのデフォルトのレールテーブル名をオーバーライドしようとしている名前空間モデルがいくつかあります。

私のモデルは次のとおりです。

/app/models/licenses.rb

  module Licenses
    def self.table_name_prefix
      ''
    end
  end

/app/models/licenses/employee.rb

class Licenses::Employee < ActiveRecord::Base
  establish_connection YAML::load(File.open("#{Rails.root}/config/licenses_database.yml"))[Rails.env]
  self.table_name = 'EMPLOYEE'
  self.primary_key = 'EMPLOYEE_ID'
end

/app/models/licenses/inspection.rb

class Licenses::Inspection < ActiveRecord::Base
  establish_connection YAML::load(File.open("#{Rails.root}/config/licenses_database.yml"))[Rails.env]
  self.table_name = 'INSPECTION'
  self.primary_key = 'INSPECTION_ID'
end

テストを実行すると、エラーが次のように生成されます。

PG::エラー: エラー: 関係 "licenses_employees" が存在しません

名前空間モデルからプレフィックスを削除するために欠けているものはありますか?

更新: ライセンス モジュールのテーブル名のプレフィックスを '' ではなく 'testing_' に設定しようとしましたが、それでも同じエラー メッセージが表示されます。

4

1 に答える 1

3

当面の問題は、レールジェネレーターを使用して既存のデータベースの名前空間モデルを作成したことだったようです。ジェネレーターは、フィクスチャ ファイルを名前空間付きのフィクスチャとして作成しました/test/fixtures/licenses/employees.yml。テストを実行しようとすると、Rails はフィクスチャ名/パスに基づいてフィクスチャをテーブルに挿入しようとしました。既存のデータベースのフィクスチャ ファイルを移動し、モデルで設定したテーブル名と一致するように名前を変更する必要がありました/test/fixtures/licenses/employee.yml

于 2012-10-01T17:45:52.820 に答える