2011-11-12 7 views
0

내 응용 프로그램은 특정 유형의 레코드 (체크 레지스터와 같은 것)에 자동으로 번호 (1001부터 시작)를 할당해야합니다. 숫자는 입력 화면의 일부로 표시되어야하지만 물론 수정할 수는 없습니다.내 자동 증가 필드를 할당하는 방법은 무엇입니까?

레일스에서 ​​어떻게합니까?

참고 : 이것은 id 필드와 아무 관련이 없습니다.

답변

2

알고 계시 겠지만 auto_increment 열을 하나만 테이블로 설정할 수 있으며 그 값은 primary key으로 정의해야합니다. 따라서 id 필드가 테이블의 primary key이므로이 옵션을 사용할 수 없습니다.

이 애플리케이션을 내부적으로 수행해야합니다. 그냥 테이블에 integer 열을 추가 :

add_column :table_name, :column_name, :integer 

그런 다음 마지막으로 만든 데이터 집합의 열 값을 수치 모델에 대한 방법을 추가 할 수 있습니다.

def self.last_<column_name>_used 
    return last.<column_name> unless last.nil? 
    return 1000 
end 

def self.next_<column_name>_to_use 
    last_<column_name>_used+1 
end 

그런 다음를 automaticly incremended해야되는에 Model.next__to_use의 값을 할당 filter을 사용할 수 있으며 또한 형태로 표시해야 할 가치를 얻을하는 데 사용할 수 있습니다. 양식은 jQuery를 사용하여 쉽게 비활성화 할 수 있습니다.

희망이 있습니다.