2011-06-09 57 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

相關問題