[英]Rails Console Doesn't Automatically Load Models For 2nd DB
我有一個Rails項目,它有一個Postgres數據庫用於實際應用程序,但需要從Oracle數據庫中提取大量數據。
database.yml看起來像
development:
adapter: postgresql
database: blah blah
...
oracle_db:
adapter: oracle
database: blah blah
我的模型來自Oracle DB上的數據
class LegacyDataClass < ActiveRecord::Base
establish_connection "oracle_db"
set_primary_key :legacy_data_class_id
has_one :other_legacy_class, :foreign key => :other_legacy_class_id_with_funny_column_name
...
end
現在,根據習慣,我經常做一些早期的開發(這是早期開發),通過編寫一點然后在Rails控制台中播放。 例如,在為LegacyDataClass定義所有關聯之后,我將開始嘗試像a = LegacyDataClass.find(:first); puts a.some_association.name
a = LegacyDataClass.find(:first); puts a.some_association.name
。 出乎意料的是,這已經因為LegacyDataClass尚未加載而死亡。
然后我可以require 'LegacyDataClass'
修復問題,直到我需要reload!
,它實際上不會重新加載它,或直到我打開一個新的控制台實例。
因此問題:
我相信這可能與您的型號名稱有關,而不是您的連接。 Rails約定是模型類名稱是CamelCase,而它們駐留的文件是小寫+下划線。
因此,“LegacyModel”類應該在models/legacy_model.rb
。 您關於"require 'LegacyDataClass'"
陳述表明情況並非如此,因此Rails不知道如何自動加載該模型。
我在工作中為應用程序寫了一些東西,它在運行時處理與其他數據庫的連接,它可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.