2012-12-21 1 views

답변

30

column 방법에 대해 설명 된 열을 만들 때 여러 가지 옵션이 있습니다. 후속 수정을 수행 할 때 add_column에도 적용됩니다. 이 데이터베이스에이 같은 한계를 부과하는 매우 이례적인 메모로

t.string :name, :limit => 20 
t.string :age, :limit => 6 

와 더 나은 솔루션 validates를 사용하여 모델을 제한하는 것입니다 :

더 제한된 열을 만드는 가장 간결한 방법은 . 예를 들어 :

validates :name, 
    :presence => true, 
    :length => { :maximum => 20 } 

MySQL은 그래서 길이 제한은 결국 특히 짧은 길이, 데이터 손실로 이어질 것 가지고 있지, 당신을 말하지 않고 너무 긴 값을 절단하는 경향이있다.

데이터베이스의 VARCHAR 열은 가변 길이이므로 VARCHAR(255)VARCHAR(20)의 열 문자 값에는 저장 이점이 없습니다.

+0

하나의 질문하십시오 .. 왜 우리는 이런 식으로 명령 줄을 통해 정의하지 않는가? 'varchar (20)'모델을 생성하는 동안, 나는 단지 알고 싶어했다? .. 막연한 질문에는 신경 쓰지 마세요. –

+0

커맨드 라인을 통해 모델을 정의 할 수는 있지만, 달성 할 수있는 범위가 훨씬 제한되어 있습니다. 그것은 또한 매우 특이한 특징이며 왜 그렇게해야하는지 확신 할 수 없습니다. 스크립트에서 사용자 정의 된 마이그레이션 파일을 렌더링하는 것보다이를 사용하면 어떤 이점이 있습니까? 일반적으로 모델은 인덱스를 추가하기 위해 적어도 일부 편집을 필요로합니다. 예를 들어 가장 사소한 경우를 제외하고 모든 경우를 제외하고는 인덱스를 추가해야합니다. – tadman

+0

내 의구심을 해결해 주셔서 감사합니다. –

관련 문제