2016-09-08 2 views
1

어떤 속성을 가질 수있는 제품을 가지고 있으며 이러한 속성은 특정 옵션으로 제한됩니다. 제품 (각 아래에 유효한 옵션) 할 수 있습니다 : 액티브 레코드에서 참조 데이터를 표현하는 가장 좋은 방법

  • 레드

    • 컬러
    • 블루
    • 녹색
  • 카테고리
    • 스포츠
    • 정장
    • 어린이
  • 방수
    • 없음

목록이 갈 수 있습니다. 어쨌든 단일 테이블로 활성 레코드에서이를 나타낼 수 있습니까? 정말하지 않는 많은 일을하기 때문에 모든 속성에 대한 모델을 가지고 낭비처럼 보일 것이다

create_table :attritubes do |t| 
    t.string :name # Red, Blue, Green, Sports, Formal... 
    t.string :field_type # Color, Category, Waterproof... 
end 

: 나는 뭔가를 보이는 하나의 참조 데이터 테이블을 가지고 이상적 일 것이다 생각합니다. 이것은 제품에 많은 특성이있는 일반적인 모델이있는 경우입니까? 또는 활성 기록 (이 구문을 구성하는) 열을 기준으로 속성을 구별 할 수있는 방법이있다 : 그를 입력 한 후

belongs_to :color, class_name: :attribute, where(field_type: 'color') 

, 그것은 거의 ... 범위처럼 보인다는 더 좋은 방법이 갈 것입니다 ?

+0

사용 열거 – Ilya

+0

방법의 다형성 연관을 사용하는 방법에 대한처럼 열거의 데이터를 가지고 다음

create_table :attritubes do |t| t.string :color t.string :category t.boolean :waterproof end 

& 같은 속성에 대한 하나의 테이블을 만들 수 있습니까? 나는 정확한 모델 관계에 손가락을 넣을 수는 없지만 '_type'필드는 유스 케이스에 대한 강한 지표처럼 보입니다. – mlabarca

답변

0

당신은

enum color: { red:0, blue:1, green:2 } 
enum category: { sports:0, formals:1, kids:2 } 
enum waterproof: { no:0, yes:1 } 
관련 문제