2016-09-22 2 views
1

저는 인구 통계학적인 변수를 측정하기 위해 Ruby on Rails로 앱을 제작하고 있습니다. 지금은 사용자 모델에 속한 모델 (통계)의 두 속성에서 데이터 유형을 선언하는 방법에 대해 의심스러워합니다. 이 속성은 "genere"및 "civil status"입니다. 그 요소가 문자열 데이터가 될 수 있지만 내가이 정보를 가지고 어떤 통계를 만들었다면, 이 정수처럼이 데이터를 선언하는 편이 좋을까요?, 즉 그것은 통계에서 명목상의 데이터이므로 숫자는 상태 또는 genere를 표현하기에 충분합니다. 1 -> femenin/2 -> masculin.이 특성을 선언하려면 정수 또는 문자열을 사용해야합니까?

많은 조언을 부탁드립니다. 시간 내 줘서 고마워.

+0

비록 'M'/ 'F'와 같이 간단하지만 항상 설명적인 가치를 지니고 있습니다. 그러나 그것은 당신에게 달려 있습니다. 명확성과 유지 보수성에 대해 생각하십시오. 숫자 값으로 가득 찬 데이터베이스는 지원 환경에서 읽기가 매우 어려울 수 있습니다. – Mick

+0

나는 db에 문자열을 사용하고 앱에 'to_sym'을 사용하는 것이 더 낫다고 생각한다. – sa77

답변

2

Enums 정수 비트 마스크는 명확한 선택 항목이 있고 추가/제거 옵션이 개발자 수준의 관심사 인 경우 속성에 좋은 방법입니다.

class Person < ApplicationRecord 
    enum gender: [:undisclosed, :male, :female, :other] 
end 

이것은 0-3의 정수 열에 성별을 저장합니다. 열은 문자열 열보다 스캔 및 색인하는 것이 훨씬 빠릅니다.

허용 가능한 문자열 값 및 쓰기 범위의 값을 허용하여 화이트리스트를 작성하는 번거 로움을 덜어줍니다.

범위를 얻으려면 Person.female을 사용해도됩니다.

+0

쪽지에서 성별과 시민권은 모두 정치적인 고구마이며,'기타 '옵션 제공과 같은 법적 문제/요구 사항을 알아야한다 . – max

+0

감사합니다 맥스, 나는 이것을 염두에두고 있으며, '기타'옵션을 제공하는 것이 좋습니다. – Inius

+0

한 가지 더, 어떻게 모델을 생성 할 때 터미널에서'enum '을 선언 할 수 있습니까? '레일스 모델 생성 통계 genere : enum civil_status : enum' 그게 맞습니까? – Inius

관련 문제