我有两个相互交互的应用程序。我需要在第一个创建的第二个应用程序中创建模型的数据库实例。以下代码仅在创建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
我应该进行哪些更改才能使其按要求工作?
答案 0 :(得分:0)
在这种情况下,您应该调用app2 API才能在app2数据库上创建用户,例如:/services/app2_service/send_user_data.json
。您还应该在app2上创建此API。
如果您确实需要同步这些数据,建议使用PostgreSQL多主复制来使两个数据库保持相同的数据或Kafka事件。