방법

2013-11-15 5 views
2

I이 몇 가지 기본적인 엔티티방법

이있는 응용 프로그램

게시물이 게시물 :

  • 이 좋아
  • 댓글
  • 및 등급

다음 세 가지 모두를 쿼리하는 SQL보기가 있습니다. PostActivityView와 같은 모델이 있습니다. 나는 ('좋아요', 댓글 및 등급에서) 적절한 값의 컬렉션을 반환

@post.activity_view

를 호출 할 수 있도록 게시물은 활동 볼 수있다. 이 모든 것이 올바르게 작동합니다.

제 문제는 Comments, Likes 및 Ratings가 아닌 hashmaps 컬렉션을 반환한다는 것입니다. 내 견해가 "(...) PostEvents with"결과를 새로 만들기 때문에 이것은 의미가 있습니다. 내 질문 :이 결과를 일반화하고 ActiveRecord 객체로 표현하는 방법이 있습니까?

좋아요, 댓글 및 등급에는 속성이 다르므로보기에서 별칭을 사용하므로 댓글에 comment.body이 있고 등급에는 rating.comments 문자가 있으므로 필요할 때 review.comments와 (과) 같은 것으로 이름을 바꿉니다. 신체). 따라서 내 결과에는 모두 동일한 속성이 있습니다. 앨리어싱 된 열만있는 PostEvent와 같은 ActiveRecord 객체를 만들 수 있어야하는 것 같습니다. 이것이 가능한가?

답변

1

설명하는 것을 수행하는 방법을 모르겠습니다. 그러나 실제로 별도의 테이블에 저장해야합니까? 단일 테이블에서 이들을 모두 유지하고 단일 테이블 상속 (http://api.rubyonrails.org/classes/ActiveRecord/Base.html#label-Single+table+inheritance)을 사용하여 특정 행이 나타내는 각 유형에 대해 별도의 클래스 (좋아요, 주석 또는 등급)를 가질 수 있습니다. 그런 다음 공통 항목이 상위 클래스에 배치 될 수 있고보다 세부적인 항목에 고유 한 항목이 하위 클래스로 들어갈 수 있습니다.

당신의 상황이 그 반대 인 것처럼 들리면 별도의 테이블을 하나의 통합으로 결합하는 것입니다. ActiveRecord 자체에서 구현하기가 매우 어려울 것이라고 생각합니다. 다른 데이터베이스는 언제 어떻게 데이터베이스 뷰의 내용을 수정할 수 있는지에 대한 다른 규칙을 가지고 있습니다 (즉, 어떻게하면 AR 뷰를 만들 수 있는지, 제안 할 때 저장을 호출하면 어떻게 될까요?)

1

하나의 집합에서 이러한 개체를 모두 단일 개체 유형으로 검색하는 것이 편리하도록보기를 제공하는 것처럼 들리는군요. , 귀하의 요구 사항이 정말로 다른 물건을 다시 가져올 때입니다.

나는 그것을 바탕으로보기의 사용에 전혀 의문을 품을 것입니다. 나는 당신이 이해하지 못하는 것을 이해하지 못합니다 - 성능상의 이유로 응용 프로그램에서 읽기 전용 보고서를 생성하기 위해 꽤 많이 사용합니다 - 그러나 행을 적절한 객체 유형으로 반환해야한다면 검색 할 것입니다. 좋아요, 댓글 및 평점으로 따로 따로 있습니다.