2016-07-22 3 views
0

레일 4혼란 내가 시도하고

다음 코드는 내 응용 프로그램에서 일하고 함께 validates_with custom validations helper를 사용하는 :title이 아닌 여러 모델의 여러 속성을 도우미 할 수 있습니다. 다음 예제를 포함하고 가이드의 validates_with 섹션의 예제가있다

은 : [: 필드]에 대한 [: 제목] 그래서 내 코드 예제에서

class GoodnessValidator < ActiveModel::Validator 
    def validate(record) 
    if options[:fields].any?{|field| record.send(field) == "Evil" } 
     record.errors[:base] << "This person is evil" 
    end 
    end 
end 

class Person < ApplicationRecord 
    validates_with GoodnessValidator, fields: [:first_name, :last_name] 
end 

이것은 내가 대체 무엇을 달성하고자하는 것입니다 여러 모델 및 여러 속성 (User.name, Photo.title 등)에 대해 CleanValidator를 사용할 수 있습니다.

답변

1

나는 당신이 가이드, 각 유효성 검사기에서 다른 예제를 원한다고 생각합니다. 당신은

class CleanValidator < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    unless ["Evil", "Other", "Restricted", "Words"].include?(value) 
     record.errors[attribute] << (options[:message] || "is a restricted word") 
    end 
    end 
end 

class Photo 
    include ActiveModel::Validations 
    attr_accessor :title 

    validates :title, clean: true 
end 
+0

이 이상하다을 할 수 있어야하지만이 유효성을 검사 : tag_list, 청소 : 사실 .. 태그가 "하는 경우는, 태그는"foo는 "경우에 생성되는 사진을 차단하지만 그것을 허용합니다 food "... 그러나 : title, 그것은"foo "와"food "를 막을 것입니다. –

관련 문제