2012-04-06 3 views
0

MySQL DB와 함께 Rails 3.2 앱을 실행 중이며 동적 컬렉션의 종류 인 모델을 만들고 싶습니다. 예를 들어 Album이라고 부릅니다.데이터베이스에 저장된 매개 변수를 사용하여 동적으로 개체 컬렉션을 작성하는 방법

앨범에 다른 모델의 인스턴스가 여러 개 있어야합니다 (예 : Item). 단 1 대 다수 조인 테이블과 정적으로 만 관련 지을 수는 없습니다. 그것은 같은 기준을 정의하는 것도 가능해야한다

는 :

  • Album는 최종 날짜 시작 날짜로부터 Item
  • Album 플래그 XY는 "foo는"
  • 입니다 Item의이 포함되어 포함되어 있습니다.

이러한 기준/매개 변수는 데이터베이스에 지속적으로 저장해야합니다. Item은 한 번 연결하면 안됩니다. 새 파라미터

과 일치하면 새 Item을 첨부해야합니다. 매개 변수의 수는 유연해야합니다 (예 : 앨범의 여러 시간 범위가 가능해야 함). 그래서 앨범과 일치하는 시간 범위 사이의 관계를 저장하는 추가 테이블을 생각해보십시오.

이 방법을 구현하고 Album 내의 모든 항목을 간단한 album.items 통화를 통해 액세스 할 수있는 가장 좋은/가장 좋은 방법은 무엇이겠습니까?

어떻게 동적 연결을위한 매개 변수를 저장해야합니까?

+0

그럼 기본적으로 임의의 쿼리를 데이터베이스에 저장 하시겠습니까? –

+0

아니요. 수집 기준은 완전히 임의적이어서는 안됩니다. 언급 된 시간 범위와 같은 3 가지 가능한 기준에 대해 생각하고 있습니다. 따라서 쿼리 자체는 쿼리에 대한 매개 변수 만 저장하면 안됩니다. 시간 범위의 시작 및 끝 날짜 – alex

+0

하지만 여전히 분류 된 쿼리를 저장하고 있습니다. 그리고 당신은 오늘 3 가지 기준을 가지고 있지만 그것은 거의 확실하게 바뀔 것입니다 (그리고 아마 릴리스 전날 03:00 일 것입니다). 배열에서 조건을 지정할 수 있다면'serialize'를 사용하여 조건을 직렬화 할 수 있습니다. –

답변

1

Album에는 여러 기준 세트가 있으므로 ItemSet 클래스를 만들 수 있다고 생각합니다. ItemSet은 단일 테이블 상속을 사용하여 다양한 하위 클래스를 가질 수 있습니다 (또는이 동작을 다른 방법으로 구현할 수 있습니다 (here 참조). ItemSet 종류에 따라 각 하위 클래스에서 items 메서드를 정의 할 수 있습니다 (날짜, 플래그 세트 등). album.items은 각각 album.item_sets에있는 items의 합집합이됩니다.

+0

클래스의 ItemSet과 하위 클래스가 각 종류의 기준에 대해 어떻게 ItemSet의 모든 서브 클래스에서 앨범과의 관계가 어떻게 생겼을까요? – alex

+0

@alex : 단일 테이블 상속을 사용하는 경우'belongs_to : album'을'ItemSet' 클래스에 넣을 수 있다고 생각합니다. 그러나 저는 긍정적이지 않습니다. [이 링크] (http://www.alexwestholm.com/tech/rails-single-table-inheritance-and-polymorphic-associations-some-simple-examples/)는 그것이 여러분이하는 일임을 나타냅니다. –

+0

고마워요 - 당신이 좋은 방향으로 나를 가리키고 있다고 생각합니다!내 구현이 완료되면 내 최종 솔루션을 내놓을 것입니다! – alex

관련 문제