Вызов действия контроллера из одного приложения в другое в Rails - PullRequest
0 голосов
/ 10 июля 2019

У меня есть два приложения, которые взаимодействуют друг с другом. Мне нужно создать экземпляр базы данных модели во втором приложении, которое создается в первом. Приведенный ниже код работает только тогда, когда я вызываю метод во втором приложении после создания и сохранения экземпляра User.

app1_service.rb

def send_user_data
  json_data = {}
  user = User.last
  json_data[:app1_user_id] = user.id
  json_data[:user_name] = user.name
  render json_data
end 

app2_service.rb

def create_user
  response = App2Service.post( '/services/app1_service/send_user_data.json', query: { request: { authenticate: {auth_key: "#{APP_CONFIG[:auth_key]}"} } } )
    User.create(app1_user_id: response['app1_user_id'], user_name: response['user_name'])
end

Я хочу создать экземпляр User в базе данных app2 всякий раз, когда user создается в app1. Поэтому я попытался так:

users_controller.rb

def create
  if @user.save

    Services::App1Controller.send_user_data(user)
end

app1_service.rb

def self.send_user_data(user)
  #Here I am not able to figure out how to call the action from the controller in the other application
end

Какие изменения я должен внести, чтобы он работал согласно требованию?

1 Ответ

0 голосов
/ 11 июля 2019

В этом случае вам нужно вызвать API app2, чтобы создать пользователя в базе данных app2, что-то вроде: /services/app2_service/send_user_data.json. Вы также должны создать этот API на app2.

Если вам действительно нужно синхронизировать эти данные, рекомендуется использовать PostgreSQL Multi-Master Replication, чтобы обе базы данных имели одинаковые данные или события Kafka.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...