Я думаю, что вы можете использовать Redis здесь. Всякий раз, когда пользователь аутентифицируется, данные активности (json) могут напрямую сохраняться в redis, например:
import json
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
user_id = request.user.id
json_data = json.dumps(data)
r.set(user_id, json_data)
# delete key whenever the user logs out
r.delete(user_id)
Вы можете выполнять поиск, фильтрацию и т. Д. На основе этого json из Redis. Также вы можете хранить данные за определенное время. Пожалуйста, проверьте эту библиотеку для интеграции Redis.
Настроенный обе Ваших базы данных с записями в config/database.yml, затем генерируйте новую миграцию.
Использование ActiveRecord:: основа establish_connection для переключения между этими двумя базами данных в миграцию как это:
def self.up
ActiveRecord::Base.establish_connection :development
patients = Patient.find(:all)
ActiveRecord::Base.establish_connection :production
patients.each { |patient| Patient.create patient.attributes.except("id") }
end
YMMV в зависимости от количества записей и ассоциаций между моделями.
Если Ваши базы данных являются точно тем же (данные не требуют пользовательской обработки) и нет слишком многих записей, Вы могли сделать это (который допускает внешние ключи):
Непротестированный... Но Вы получаете идею
#All models and their foreign keys
tales = {Patients => [:doctor_id, :hospital_id],
Doctors => [:hospital_id],
Hospitals}
ActiveRecord::Base.establish_connection :development
max_id = tables.map do |model|
model.maximum(:id)
end.max + 1000
tables.each do |model, fks|
ActiveRecord::Base.establish_connection :development
records = model.find(:all)
ActiveRecord::Base.establish_connection :production
records.each do |record|
#update the foreign keys
fks.each do |attr|
record[attr] += max_id if not record[attr].nil?
end
record.id += max_id
model.create record.attributes
end
end
Если у Вас есть МНОГО записей, Вам, возможно, придется разделить на части, это так или иначе... делает это в группах 10k или чего-то.
BTW, вероятно, имеет больше смысла для этого быть граблями или capistrano задачей, а не миграцией.