2017-01-03 6 views
0

난 레일 애플 리케이션, 대부분의 데이터를 호스트하고, 다른 애플 리케이션 B는 A라는 테이블에서 일부 정보를 사용하고, 위치는 B에서 사용자와 many - to - many, 디커플링 이유에 대한 A와 B 사이에서 DB를 공유하고 싶지 않았기 때문에 B에 대한 ActiveResource를 사용하여 A에서 모델 정보를 가져 와서 B에 연관 관계를 유지하고자하므로 연결을 처리하는 방법이 궁금합니다. 아마도 B에서 ID 관계 테이블을 유지 한 다음 두 DB를 동기화하는 방법 일 수 있습니다. 내가 상상하는 무엇 ActiveResource을 사용하여 측면에서레일에서 ActiveRecord 모델과 ActiveResource 모델 간의 다 대다 연관을 유지하는 방법은 무엇입니까?

+0

나는 데이터베이스 (또는 slony와 같은 데이터베이스와 밀접하게 작동하는 것)를 통해 이것을 수행하고 코드를 통해하지 않을 것을 제안합니다. 직접 제작하면 관리하기가 매우 쉽습니다. 자신이 직접해야 할 일은 다음과 같습니다. 업데이트를 동기화 하시겠습니까? 거래는 어떨까요? 두 데이터베이스가 동기화되지 않은 경우 일관성은 어떻게됩니까? –

답변

0

  1. 위치를 공유하기위한의 편안하고 API를 만들기 때문이다. 나는 확실하지 않다

그런 다음 우리는 B의 일반적인 모델로 위치를 사용할 수 ActiveResource를 사용하여 B의 위치 모델을 정의 또는 우리는 A와 B 모두에서 고립 된 API 서버를 만들 수 있습니다 위에 언급 한 협회 문제. 어쩌면 나는 그 질문을 오해 했는가?

class Location < ActiveResource::Base 
    self.site = "http://api.b.com:3000" 
    has_many :users, through: :location_users 
end 
+0

문제는 다음과 같습니다. B에 location_users 테이블이 있어야하고 location_users에 location_id 및 user_id가 있지만 A에서 위치가 삭제 된 경우 오류가 발생합니다. 그런데 location_user에는 비즈니스가 있습니다. 사용자 위치 유지 정보와 같은 논리 –