我有一个 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
. 出乎意料的是,这会因 LegacyDataClass 尚未加载而死。
然后我可以require 'LegacyDataClass'
解决问题,直到我需要reload!
,它实际上不会重新加载它,或者直到我打开控制台的新实例。
因此问题:
- 为什么会这样?显然,我不理解 Rails 的一些魔力。
- 什么是方便的 Rails解决方法?