2008-10-02 27 views
1

我有一個Rails項目,它有一個用於實際應用程序的Postgres數據庫,但需要從Oracle數據庫中抽出大量數據。Rails控制檯不會自動加載第二個數據庫的模型

database.yml的樣子

development: 
    adapter: postgresql 
    database: blah blah 
    ... 

oracle_db: 
    adapter: oracle 
    database: blah blah 

我的模型,從對Oracle數據庫看起來數據下降喜歡

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之類的東西。意外的是,這與LegacyDataClass死亡尚未加載。

我可以然後require 'LegacyDataClass'修復問題,直到我需要reload!,這實際上不會重新加載它,或直到我打開控制檯的新實例。

這樣的問題:

  • 爲什麼會發生這種情況?顯然有一些Rails魔法我不理解。
  • 什麼是方便的Rails 解決方法

回答

3

我相信這可能與您的型號名稱有關,而不是您的連接。 Rails約定是模型類名稱是CamelCase,而它們駐留的文件是小寫字母+下劃線。

因此,「LegacyModel」類應該在models/legacy_model.rb。您的關於"require 'LegacyDataClass'"的聲明表明事實並非如此,因此Rails不知道如何自動加載該模型。

+0

Gaaaaaaaah,你能告訴誰做太多的Java爲自己的好?我沒有使用生成器,因爲我認爲我不需要自動生成的遷移,然後我沒有考慮它就應用了Java「filename = classname + extension」約定。 非常感謝! – 2008-10-02 05:37:24

相關問題