rails 검사

7518 단어 Rails
validate () 를 사용자 정의할 수 있습니다. 이 방법은 데이터를 저장할 때마다 호출됩니다.예:
def validate

 if name.blank? && email.blank?

  errors.add_to_base("You must specify a name or an email address")

 end

end


또한 validate_ 사용자 정의 가능on_create(), validate_on_업데이트 () 방법. valid?() 메서드는 수시로 호출되어 데이터가 검사를 통해 되돌아올 수 있는지 테스트하는 데 사용할 수 있는 오류 정보입니다. error_messages_for (모델) 방법 표시.예: <%=error_messages_for'article'%> 검증 전체:validates_acceptance_of 지정한 checkbox를 선택해야 합니다.(예: (*) 약관에 동의합니다) 사용법: validates_acceptance_of attr... [ options... ]매개 변수: 메시지 텍스트 기본값: "must be accepted.":on:save,:create, or:update 실례:class Order  "Please accept the terms to proceed" end
validates_associated 지정한object를 검사합니다.사용법:validates_associated name... [ options... ]매개 변수: 메시지 텍스트 기본값: is invalid.:on:save,:create, or:update 실례:class Order  "are messed up"  validates_associated :user end
validates_confirmation_of 데이터 재조정법:validates_confirmation_of attr... [ options... ]매개 변수: 메시지 텍스트 기본 "doesn"t match 확인.":on:save,:create, or:update 실례: 암호표: <%=password_field "user", "password"%>
 <%= password_field "user", "password_confirmation"%>
# 두 번째 테이블 이름은 xxx_confirmation class User < ActiveRecord::Base  validates_confirmation_of :password end
validates_each는 블록을 사용하여 하나 이상의 매개 변수를 검사합니다.사용법:validates_each attr... [ options... ] { |model, attr, value| ... }매개 변수:allow_nil boolean이true로 설정되었을 때 nil 대상을 건너뜁니다.:on:save,:create, or:update 실례:class User validates_exclusion_of 체크 객체에 지정된 데이터 사용법이 포함되지 않음 확인:validates_exclusion_of attr..., :in => enum [ options... ]#enum은 모든 것을 include로 사용할 수 있습니까?() 판단의 범위.매개 변수:allow_nil을true로 설정하면 nil 대상을 건너뜁니다.: in (or: within) enumerable: 메시지 텍스트 기본값: "is not included in the list.":on:save,:create, or:update 실례:class User %w{ polka twostep foxtrot },            :message =>"no wild music allowed"  validates_exclusion_of :age,             :in => 13..19,             :message =>"cannot be a teenager" end
validates_inclusion_of 확인 대상은 지정된 범위에 포함됩니다.validates_inclusion_of attr..., :in => enum [ options... ]매개 변수:allow_nil을 true로 설정하고 nil 대상을 직접 건너뛰기: in(or: within) enumerable An enumerable object.: 메시지 텍스트 기본값: "목록에 포함되지 않았습니다.":on:save,:create, or:update 실례:class User %w{ male female },            :message =>"should be 'male' or 'female'"  validates_inclusion_of :age,            :in => 0..130,            :message =>"should be between 0 and 130" end
validates_format_of용 정규 검사 대상 용법:validates_format_of attr..., :with => regexp [ options... ]매개 변수: 메시지 텍스트 기본값: "is invalid.":on:save,:create, or:update:with 정규 표현식 실례:class User /^\d+(in|cm)/ end
validates_length_of 검사 대상 길이 사용법:validates_length_of attr..., [ options... ]매개 변수: in(or:within)range: is integer: minimum integer: maximum integer: message text 기본 문자는 매개 변수에 따라 변경됩니다.% d를 사용하여 확정된 최대, 최소 또는 지정한 데이터를 대체할 수 있습니다.   :on :save, :create, or :update   :too_long text 사용: maximum 후: message:too_short text ( :minimum )   :wrong_length(:is) 인스턴스:class User 50  validates_length_of :password, :in => 6..20  validates_length_of :address, :minimum => 10,                :message =>"seems too short" end
validates_numericality_of 검사 대상이 수치 사용법인지 여부:validates_numericality_of attr... [ options... ]매개 변수: 메시지 텍스트 기본 "is not a number."   :on :save, :create, or :update   :only_integer 인스턴스:class User true end
validates_presence_of 객체가 비어 있는지 확인:validates_presence_of attr... [ options... ]매개 변수: 메시지 텍스트 기본값: "can"t be empty.":on:save,:create, or:update 실례:class User validates_uniqueness_of 객체가 중복되지 않는지 확인:validates_uniqueness_of attr... [ options... ]매개 변수: 메시지 텍스트 기본값: "has already been taken.":on:save,:create, or:update:scopeattr 지정 범위, 조합 검사에 사용 실례:class User  class User < ActiveRecord::Base  validates_uniqueness_of:name,:scope=>'group_id'end#동일group_에 지정id의 조건에서 중복되지 않습니다.일반 정규: E-Mail 주소 형식: validates_format_of     :email,                        :with       =>/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,:message=>'email must be valid'사이트 형식:validates_uri_existence_of :url, :with =>       /(^$)|(^(http|https)://[a-z0-9] ([-.]{1}[a-z0-9] )*.[a-z]{2,5}(([0-9]{1,5})?/.*)?$)/ix
Validation Helpers
일부 확인은 평상시입니다. 이 속성은 비워둘 수 없고, 다른 속성은 18과 65 사이여야 합니다.활동 기록에는 이러한 확인을 모델에 추가하는 표준 도움말이 있습니다.모든 것은 클래스 레벨의 방법입니다. 모든 이름은validates_시작.모든 방법은 선택할 수 있는 속성 이름 목록을 받아들일 수 있습니다. 이것은 설정 옵션의 해시표에 의해 확인됩니다.
예를 들어, 우리는 이전에 확인한 것을 이렇게 쓸 수 있다
class User < ActiveRecord::Base
validates_format_of :name,
:with =>/^w+$/,
:message => "is missing or invalid"
validates_uniqueness_of :name,
:on => :create,
:message => "is already being used"
end
대부분의 validates_methods 수락: on 및: 메시지 옵션:on 옵션은 확인 및 수락을 언제 적용할지 결정합니다:save (기본값),:create, 또는:update 중 하나입니다.:메시지 매개 변수는 오류 메시지를 생성하여 덮어쓸 수 있습니다.
확인 실패 시, 도움말 방법은 이벤트 레코드 모델 객체에 error 객체를 추가합니다.이것은 확인된 필드에 연결됩니다.확인한 후에'모델'대상의 errors 속성을 보고 오류 목록에 접근할 수 있습니다.활동 기록이 Rails 응용 프로그램의 일부로 사용될 때 이 검사는 보통 두 단계로 이루어집니다.
1. 컨트롤러가 활동 기록 대상을 저장하려고 했지만 확인 때문에 저장에 실패했습니다. (false로 돌아갑니다.)컨트롤러에 잘못된 데이터가 포함된 양식이 다시 표시됩니다.
2, 뷰 템플릿에서 error_ 사용messages_for () 메서드는 모델 객체의 오류 목록을 표시하고 사용자가 필드를 수정할 수 있는 기회를 제공합니다.
http://sunac400.blog.163.com/blog/static/22658271200702243452435/
한 단락을 덧붙이다
class Product < ActiveRecord::Base
    validates_presence_of :title,:description ,:image_url
    validates_numericality_of :price
    validates_uniqueness_of :title
    validates_format_of :image_url,:with=>%r{\.(gif|jpg|png)$}i ,:message=>'must be a url for gif,jpg,png image.'
    validates_length_of :title ,:minimum=>4,:maximum=>50,:message=>"title must be in 4~50."
    
    validate:price_must_be_at_least_a_cent
    protected
    def price_must_be_at_least_a_cent
        errors.add(:price,'should be at least 0.01') if price.nil?|| price<0.01
    end
end

좋은 웹페이지 즐겨찾기