我正在使用rails 4,並希望集成一些外部API,爲此我有一個情況,我必須創建用戶在兩個數據庫同時具有相同的記錄。創建設計用戶在兩個數據庫同時記錄相同的兩個數據庫
我使用設計這個Rails應用程序,到目前爲止,我還做了以下保存用戶記錄在另一個數據庫:
config/database.yml
development:
adapter: mysql2
encoding: utf8
database: test_openmeetings_development
pool: 5
username: root
password: root
socket: /var/run/mysqld/mysqld.sock
openmeetings_dev:
adapter: mysql2
encoding: utf8
database: openmeetings
pool: 5
username: root
password: root
socket: /var/run/mysqld/mysqld.sock
models/User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
# Setup accessible (or protected) attributes for your model
attr_accessible :new_password, :firstname, :lastname, :username, :email, :password, :password_confirmation, :remember_me, :confirmation_token
attr_accessor :new_password
# creating user record to another database just after Devise user is created
after_create :save_to_openmeetings
def save_to_openmeetings
user = last_user
ActiveRecord::Base.establish_connection("openmeetings_dev").connection
sql = "INSERT INTO users (firstname, lastname, login) VALUES ('#{user.firstname}', '#{user.lastname}', '#{user.email}')"
connection.execute(sql)
# reconnect database to original state
ActiveRecord::Base.establish_connection("#{Rails.env}").connection
end
def last_user
User.last
end
end
PROBLE M 1.雖然它正在兩個數據庫(從控制檯日誌)中正確創建用戶,但我面臨的問題是,Data存在另一個數據庫(openmeetings)中,但該數據不存在在我的原始數據庫(test_openmeetings_development)中
- 連接還沒有重新回到原來的數據庫(test_openmeetings_development)
可能是什麼我做的是不是一個好主意,所以,請分享我能解決我的問題的邏輯。 (?爲什麼它不工作),或請讓我知道什麼,我在此代碼是缺少
感謝
這似乎是對我來說完全是錯誤的做法。您應該考慮1.主從複製或2.定期快照從一個移動到另一個。你需要兩個數據庫的原因是什麼? –
謝謝黑暗獵鷹給你的建議。還有什麼建議? – przbadu
@przbadu你是如何解決這個問題的?我需要完成類似的場景 – MicFin