2009-07-31 8 views
10

ActiveRecord 개체 모음이 있습니다. 실제로 데이터베이스에 저장하지 않고 이러한 각 개체에 대한 모든 유효성 검사를 실행할 수 있기를 원합니다. 나는 그것들을 데이터베이스에 저장하는 것이 유효한지 알고 싶을뿐입니다. 즉, 필자는 기본적으로 각 객체에 대해 errors 데이터 구조를 채 웁니다. 이것을 할 수있는 방법이 있습니까? 아니면 errors 컬렉션의 수명주기에 대해 빠진 것이 있습니까?저장하지 않고 ActiveRecord 유효성 검사하기

답변

23

당신은 모델이 유효한지 확인하기 위해 다음을 수행 할 수 있습니다 ".유효한?" 메서드는 유효성 검사를 실행하여 모든 오류를 위의 예제에서와 같이 액세스 할 수있는 ActiveRecord :: Errors 개체에 넣습니다. 콘솔에서 예제를 사용해보십시오. 원하는 경우 느낌을 얻을 수 있습니다.

+0

비슷한 줄에 따라 레코드를 기반으로 게시 링크를 표시하려고 시도하는 중 게시가 유효하지 않습니다. 내 유효성 검사에서 유효성 검사를 사용하고 있습니다. 속성을 변경하여 속성을 변경할 수있는 쉬운 방법이 있습니까? true로 설정하고 게시에 유효한지 확인하십시오. 예 : post = Post.new (: title => "title", : published => false) post.published = true post.valid 인 경우? post.published = false – chetu

2

개체에 #valid? 메서드를 실행하면 모든 유효성 검사가 실행되고 errors 구조체가 채워집니다. 당신이 오류가 무엇인지보고 싶다면

@user = User.new 
if @user.valid? 
    #do things 

, 당신이 할 수 있습니다 :

@user = User.new 
unless @user.valid? 
    @user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"} 

를 호출

dude = Person.new 
unless dude.valid? 
    # Examine errors 
end 
관련 문제