Ich verwende HStore in Rails 4.1, um I18n und die Speicherung von Sprachen zu verwalten. Es funktioniert großartig das einzige Problem, das ich habe, ist ich, so etwas tun möchte (statt mit store_accessor)rails 4.1 Validierung von beliebigen Feldern über hstore
In Rails 4.0 ist dieser große gearbeitet:
https://gist.github.com/rf-/2322543 (simple_form and hstore basic functionality)
So konnte ich einfach so etwas wie:
validates_hstore :content do
validates_presence_of :en
end
Wo die Magie passiert ist (scheint nicht richtig in Rails 4.1 zu arbeiten)
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
Statt immer bekomme ich, auch wenn das Feld nicht leer ist:
messages:
:en:
- can't be blank
Bemerkung am Rande: aktuelle Syntax für validatons: validiert: en, Präsenz: {Präsenz: true, Meldung: "Custom Nachricht"}, –
Can fügen Sie bitte hinzu, wie dieses Modul verwendet werden soll? – parzival