문제

model_name.rb 파일에 유효성 검사가있는 모델이 주어지면 해당 유효성이 수동으로 어떻게 액세스 할 수 있습니까? 내장 레일 트릭과 함께 작동하는 내 자신의 양식 검증 시스템을 요리하고 싶습니다. 가능한 한 모든 것을 건조하게 유지하고 싶습니다. 내 주요 문제는 양식 값이 데이터베이스에 도달하기 전에 서버 측 유효성 검사를해야한다는 것입니다 (다단계 양식을 사용하고 있음).

기본적으로 나는 같은 방법이 있는지 궁금합니다

User.validations.each do |v|
    puts v.constraint.to_s + " " + v.message
end

이와 비슷한 점이 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

내 주요 문제는 양식 값이 데이터베이스에 도달하기 전에 서버 측 유효성 검사를해야한다는 것입니다 (다단계 양식을 사용하고 있음).

클래스 파일의 유효성 검사에 따라 모델이 유효하지 않은 경우 데이터가 데이터베이스에 저장되지 않습니다 (통과하지 않는 한 false ~로 save 검증을 억제하는 방법).

  • 모델을 호출하여 모든 시점에서 유효한 지 물어볼 수 있습니다. valid?/invalid? 행동 양식.

다른 팁

ActivereCord 객체는 유효한 후 오류 메소드를 노출시킵니다. 어떤 유효성 검사가 위반되는지에 대한 메시지를 제공합니다. 유효한 점검을 확인할 수 있습니까? 그런 다음 귀하가있는 양식의 일부에있는 필드가 유효하지 않은지 확인하십시오. 필드 필드 및 필드 2가있는 양식에 대해 이와 같은 일을 할 수 있습니다.

unless x.valid?
  [:field1,:field2].each do |field|
    yes_there_was_an_error if x.errors[field]
  end
end

가장 좋은 방법은 상태 머신을 사용하고 데이터를 데이터베이스에 저장하여 양식의 다양한 단계 사이에 저장하는 것입니다.

당신은 예를 들어 할 수 있습니다 validates_presence_of :username, :if => proc {|u| u.signup_step >= 2 }, 어디 signup_step 데이터베이스의 정수 열입니다.

따라서 양식간에 데이터베이스에 저장하고 싶지 않다고 말하지만, 나는 당신이해야한다고 생각합니다. 이렇게하면 불쾌한 해킹없이 정기적으로 검증 및 모델을 사용할 수 있습니다. 그리고 솔직히, 나는 이런 식으로 그렇게하는 것이 문제라고 의심합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top