2011-07-01 2 views
1

Ruby on Rails 3.0.7을 사용하고 있으며 트리 클래스의 동작이 거의 동일하며 모델 파일의 코드도 거의 같습니다. 모든 요소에는 namedescription 특성이 있으며 동일한 유효성 검사 메서드를 실행하고 동일한 함수를 제공하는 데이터를 일관되게 유지하는 before_save 콜백이 있습니다.리팩토링 유효성 검사 메소드 및 콜백

구분 클래스 \ 모델 (내 응용 프로그램의 \lib 폴더에있는 관련 파일을 찾아야한다고 생각합니다)의 유효성 검사 메소드와 콜백을 리팩토링하고 싶습니다.

내가 그것을 만들기 위해해야 ​​할 일은 무엇입니까? 내 클래스에 추가해야하는 코드와 리팩터링 클래스 \ 모델의 코드는 무엇입니까?

답변

0

글쎄, 당신은 당신의 세 가지 모델이 상속되는 수퍼 클래스를 만들 수 있습니다. 나는 모델 자체와 함께 앱/모델에 추상 기본 클래스를 넣는 경향이있다. 당신의 상황이이 같은 그룹을 이해가되지 않도록 많은 차이가있는 경우

# app/models/thing.rb 
class Thing < ActiveRecord::Base 
    # common code goes here, such as 
    before_save ... 
    validates_length_of :foo 
end 

# app/models/red_thing.rb 
class RedThing < Thing 
    # methods specific to RedThing go here 
end 

# app/models/blue_thing.rb 
class BlueThing < Thing 
    # methods specific to BlueThing go here 
end 

, 당신은 단지 좀 더 복잡하다, 대신 모듈을 사용하고자하는 것입니다.

+0

Davis - 모듈을 사용하여 예제를 만들 수 있습니까? – Backo

+0

모듈과 비슷한 것을 시도했을 때 어떤 어려움을 겪었습니까? –

0
+0

폴 그 로브 스 - 유효성 검사 목적으로 ... 콜백은 무엇입니까? 또한 분리 된 클래스 \ 모델에 모든 "리팩토링 된 코드"를 유지하고자합니다. – Backo

+0

죄송합니다 ... 약속, 더 이상 질문을 제대로 읽지 않고 더 이상 의견이 없습니다. ( FWIW - @ rob-davis '답변이 나에게 좋을 것입니다. 다른 데이터베이스에서 실행되는 여러 클래스를 만들 때 똑같은 일을했습니다. –

+0

Groves - 감사합니다. 어쨌든 – Backo

관련 문제