2

hstore를 simple_form과 함께 사용할 수 있지만 대부분의 기본 기능 (저장)을 제외하고는 작동하지 않습니다. 유효성 검사 메시지가 개별 필드에 표시되지 않습니다. 수동으로 설정하지 않으면 값 자체가 올바르게 채워지지 않아도 모든 hstore 필드가 이상하게 표시됩니다.simple_form 및 hstore 기본 기능

나는 같은 것을 할 필요가 :

<%= f.simple_fields_for :phones do |phone| %> 
    <%= phone.input :agent, :input_html => { :value => @artist.phones['agent'] } %> 
<% end %> 

나는 hstore 해시에 대한 simple_fields_for 사용해야하고 제대로 저장하지만 편집에 값이 값을 설정 input_html를 사용하지 않고 채울 수 없습니다. 필요에 따라 모든 필드를 표시하고 유효성 검증 오류가 전혀 나타나지 않습니다 (작동 함). 그래서 같은

사용 hstore의 검증은 (대답 아래에서 추가) :

validates_hstore :emails do 
    validates_format_of [:agent,:artist], :with => /@/, :allow_blank => true 
end 

어떤 아이디어? 감사.

현재 Hstore에 대한 일부 사용자 지정 유효성 검사를 추가하는 방법의 예를 찾을 수 있습니다

답변

1

:

https://gist.github.com/rf-/2322543

module HstoreValidation 
    def validates_hstore(field, &block) 
    validation_class = Class.new do 
     include ActiveModel::Validations 

     def self.name 
     '(validations)' 
     end 

     def initialize(data) 
     @data = data 
     end 

     def read_attribute_for_validation(attr_name) 
     @data[attr_name] 
     end 
    end 
    validation_class.class_eval &block 

    validate do 
     validator = validation_class.new(self[field]) 

     if validator.invalid? 
     validator.errors.each do |attr, text| 
      self.errors.add(attr, text) 
     end 
     end 
    end 
    end 
end 

그러나 검증은 간단한 양식 작동하도록하는 방법은, 나는 아니에요을 확실한.

+2

이 솔루션은 더 이상 Rails 4.1에서 작동하지 않습니다. – holden