2011-01-29 5 views
-1

Ruby on Rails 3을 사용하고 있으며 새 레코드의 유효성을 검사하는 방법이 좋은지 아닌지 알고 싶습니다.사용자 정의 유효성 검사를위한 방법에 대한 조언

내 모델에서 나는이 같은 모든 사용자 정의 유효성 검사 mathods이 그래서 공통의 RoR 검증 시스템을 사용하지 않는 :이 방법

def create 
    ... 
    @user.validates_user_name(params[:user]) 
    @user.validates_user_name(params[:user]) 
    ... 
end 

의 컨트롤러에서 호출

def validates_user_name(user) 
    ... 
    end 

    def validates_user_surname(user) 
    ... 
    end 

    ... 

새 사용자 만들기를 확인하는 것이 좋은 방법입니까?? 해커가이 접근법을 사용하는 데 문제가 있습니까?

+0

왜 ActiveRecord에 기본 제공되는 유효성 검사를 사용하지 않는지 궁금합니다. 그게 분명히 한 가지 방법이지만, 나는 모든 것을 돌보는'validate_user (params [: user])'메소드를 가지고있을 것이다. – raidfive

+0

나는 유효성 검사에 대한 통제력을 점점 더 갖기를 원하기 때문에 : 내가 원하는 곳에서 그리고 내가 원하는 곳에서 유효성 검사 방법을 호출 할 수있는 것처럼, 나는 어떻게 원한다! ;-) – user502052

+0

user502052 : Rails의 "흐름에"맞서서 자신 만의 유효성 검사를 만드는 것은 눈살을 찌푸리게됩니다. 일반적으로 대부분의 검증 작업은 Rails가 처리 할 수 ​​있습니다. 그렇지 않으면 유효성 검사를 사용하게됩니다. 아마도 당신은 당신의 답을 편집하여 유효성 검사가하는 것을 포함시킬 수 있습니까? –

답변

1

특히 유효성 검사 논리가 비슷한 경우 사용자 정의 유효성 검사가 Rails에 내장 된 것보다 낫다는 것을 확신하는 데 어려움을 겪을 것입니다.

상황이 계속 될 때 제어하려는 경우 before_create과 같은 기본 콜백 훅을 활용해야합니다. 이러한 방식으로 자동 트랜잭션 롤백 및 디커플링을 포함하여 많은 이점이 있습니다. 그러나 Rails가 이미 수행하고있는 작업을 이미 수행 한 경우에는 바퀴를 재발 명하지 않는 것이 좋습니다.

+0

감사합니다. 어쨌든 나는 당신의 "인내심"을 "만족시켜야"합니다 : 나는 레일에 내장 된 것보다 내 사용자 정의 유효성 검사가 더 낫다는 것을 누군가에게 납득시키고 싶지 않습니다 ... mhmmh, 어디에서 읽었습니까? – user502052

+0

나는 나의 인내심을 만족시킴으로써 당신이 의미하는 바를 따르지 않습니다. –

+0

그것은 단순한 아이러닉/논쟁의 문구입니다. – user502052

관련 문제