2012-06-28 5 views
0
나는 유사하지만 동일하지 않은 두 개의 모델에서 정보를 검색 할 필요가

를 사용하여 액티브 :: 관계 객체를 레일.는 다음과 같은 모델

그러나 몇 가지 방법을 살펴 보았지만 내 앱의 많은 기능에 필요한 ActiveRecord :: Relation 대신 액티브 개체 배열을 반환합니다.

두 테이블의 합집합을 포함하는 ActiveRecord :: Relation 개체를 반환 할 수있는 방법이 있습니까?

나는

@group = Mymodel.find_by_sql("SELECT id FROM Mymodels 
    UNION SELECT id FROM AnotherModels") 

같은 것들을 시도하고 또한 액티브 :: 관계를 반환 할 수 없습니다 그러나 Model.where 방법을 사용하여 살펴 보았다

편집 :

그냥 분명히 내가 필요 할 수 반환 값 ActiveRecord :: 두 테이블의 합집합 또는 병합 인 관계

답변

0

MyFirstModel.joins(:my_second_models) 해 보셨습니까? here에서 joins 세부 정보를 확인하십시오.

편집 : 단일 테이블 상속은이 문제에 더 나은 솔루션입니다. 아래 의견을 참조하십시오. 이 같은

+0

안녕하세요, 감사합니다. 그러나 이것이 무엇을 찾고 있는지 확실하지 않습니다. 두 모델의 모든 객체를 포함하는 레코드를 반환해야하지만 함께 두 테이블을 결합하고 싶지 않습니다. Tis는 노조와 더 비슷합니다. –

+1

아, 이제 문제가 더 잘 이해됩니다. 단일 테이블 상속 : 동일한 데이터베이스 테이블을 기반으로 두 모델을 만드는 살펴 봐야한다고 생각합니다. 그렇게하면 연결을 통해 모든 것을 쉽게 가져올 수 있지만 각 모델에 대해 고유 한 특성 및 메서드를 만들 수 있습니다. –

+0

멋지다 나는 이것에 대해 조사했지만 기존 응용 프로그램을 확장 할 때 더 간단한 방법이 있기를 바랐다. 거기에 꽤 많은 null 컬럼이있을 것입니다. 그러나 유일한 방법이 될 것 같습니다. –

0

시도 뭔가 :

Model.joins(:other_model).where("attr1" = :attr1, 
           { attr1: "example" }).group(:attr1) 

당신에 대한 where 댓글을 달았습니다 때문에, 나는 호출에 where 방법을 추가했습니다. 마지막에 :group을 사용하여 모든 것을 그룹화 할 수도 있습니다.

관련 문제