2011-06-09 104 views
1

回报率= 2.3.11 红宝石= 1.8.7 宝石= 1.3.7如何将数据从其他数据库中获取到我的数据库中?

我有一个数据库(称之为 “第一”)配有4个表。我有另一个数据库(称为此数据库"Second"),(与另一个密码)。我想从Second和表中获取电子邮件(字段),如果有任何更新,并插入First数据库。

问题:我该怎么做?

回答

4

你可以在你的database.yml中定义不同的数据库。

first: 
    adapter: mysql 
    database: first_development 
    username: user 
    password: pwd 
    host: localhost 

second: 
    adapter: mysql 
    database: second_development 
    username: user 
    password: pwd 
    host: localhost 

,然后使用ActiveRecord::Base.establish_connection

class A < ActiveRecord::Base 

    ActiveRecord::Base.establish_connection "first" 

end 

class B < ActiveRecord::Base 

    ActiveRecord::Base.establish_connection "second" 

    def self.sync 
    A.all.each do |record| 
    B.create(:email => record.email) 
    end 
    end 

end 

我添加了一个简单的方法称为同步,可以为您的同步问题的起点您的模型连接到不同的数据库,

+0

完美,现在我明白了它是如何工作的,谢谢!但是有一个问题。例如在模型(A类)我应该创建一些def,我从数据库中获取信息? P.S - 在database.yml中。如果我的第二个数据库只处于生产模式,那么我可以像你写的那样添加,但不是第二次写my_database,是的? – 2011-06-09 08:44:29

+0

查看我的更新后的帖子,了解一个方法的样子(不知道你的模型是什么样的)。我不明白你的问题的第二部分。 – auralbee 2011-06-09 08:59:56

+0

谢谢,我现在正在测试。我的问题的第二部分,对不起。我的意思是,如果我的第二个数据库(名为uzez,其中有电子邮件字段的表管理器)处于另一主机上的生产模式,那么我只需将此“数据库:second_development”替换为“database:uzez_production”? SO,A类=带电子邮件字段的受访者9)和B类(带有带有现场电子邮件的表格管理员的另一个数据库)。是?最后一个问题,这种方法同步我应该在某个地方写东西? – 2011-06-09 09:09:50

相关问题