2013-07-08 21 views
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 %> 

我要simple_fields_for爲hstore哈希使用,並妥善保存,但在編輯值不不使用input_html設定值填充。它根據需要標記每個字段,驗證錯誤根本不顯示(它們確實有效)。

使用hstore驗證,像這樣(從下面的答案補充):

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

任何想法?謝謝。

回答

1

你可以找到如何在這裏添加一些自定義驗證的Hstore一個例子:

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