2016-05-19 8 views
0

Ich versuche, Daten über meine externen Daten und gespeicherte Daten auf lokalen Rails db zu vergleichen und wenn etwas auf externen db ändern, ändern Sie auch auf lokale.Rails 4 - Vergleichen Sie Daten von MySQL und SQLite

Ich bin so weit hier:

MY MODEL

def self.updatedata 
    user = Account.updatedata 
    stats = Status.all 

    user.each do |u| 
     id = u.accountId 
     stats = u.accountStatus 

     if stats.user_id != id && stats.user_status != u.stats 
      p "It's Changed" 
     end 
    end 
end 

Account.update (extern) Daten Ich erhalte: Account.select('accountId', 'accountStatus') dass user_id = accountId, user_status = accountStatus

Dann Speichern im Drucken Status.alle (lokal) gibt es eine id, user_id, user_status, timestamps

Antwort

2

Was genau ist Ihr Anwendungsfall? Wenn Sie versuchen, das Statusmodell mit dem Account-Modell auf dem neuesten Stand zu halten, würde ich dies tun.

Verwenden Sie den gem Octopus, um Verbindungen zu externen und lokalen Datenquellen herzustellen. Sie können 1 Quelle in Code pro Modell angeben sogar Ihr Modells (oder Scherbe zur Laufzeit) https://github.com/thiagopradi/octopus

Dann auf Ihrem Konto-Modell können Sie einen after_commit Rückruf einrichten, die die Daten auf Ihrem Statusmodell voraus und setzen gehen kann. Sie können ActiveJobs sogar dazu veranlassen, dies zu tun, wenn Sie erwarten, dass es schnell eine große Menge an Änderungen erhält.

+0

Schön, das ist genau das, was ich brauche Mann! – liborza