RoR使用2个不同的数据库和活动记录适配器?相同的表名

时间:2012-08-06 17:51:40

标签: mysql ruby-on-rails database salesforce databasedotcom-gem

目前我正在开发一个rails项目,用于将salesforce.com中的数据库与我们的SQL服务器连接起来。 atm我们使用gems'mysql2'作为sql部分和'databasedotcom' +'databasedotcom-rails'用于salesforce部分。

我们的问题是,我们在两个数据库中的表具有相同的名称。因此,两个适配器都尝试将它们封装到activerecord类中,正如您所猜测的那样,这是一个很大的问题。不幸的是我们在互联网上找不到解决方案 那么如何防止namespaceconfict?

2 个答案:

答案 0 :(得分:2)

我可能不理解这个问题,但我认为以下内容适合你。

class Account < ActiveRecord::Base
  # table name is 'accounts' in mysql db
end

class SalesForceAccount < ActiveRecord::Base
  establish_connection "#{Rails.env}_salesforce"
  table_name = :accounts
end

database.yml

development:
  # your mysql credentials and adapter info
development_salesforce:
  # your salesforce credentials and adapter info

答案 1 :(得分:0)

为了解决冲突的命名空间的问题,我们将mysql的模块放在他自己的命名空间中。 databasedotcom gem在运行时创建模型,因此您只需为mysql数据库创建模型。

create modeles for sql
create folder named after your wished prefix in models folder (for us: Mad)
put your models in the namespacee-folder (for us: Mad)
wrap the model classes in module <namespace>

喜欢account.rb:

module Mad
    class Account < ActiveRecord::Base
        attr_accessible :name, :website, :phone
    end
end

现在您可以通过帐户访问salesforce帐户,使用Mad :: Account

访问mysql