Sha256: f63f7a72c0bff53116d97f2eba36bd1ca6a470c50446b29f34ef16a55e2052e1
Contents?: true
Size: 1.38 KB
Versions: 1
Compression:
Stored size: 1.38 KB
Contents
require "super_form/concerns/atomic_save" require "reform" require "reform/rails" require "reform/form" require "reform/active_record" require "reform/form/coercion" require "disposable" require "disposable/twin/parent" class SuperForm::Reform < Reform::Form include SuperForm::AtomicSave extend ::ActiveModel::Translation feature Coercion # 定義 i18n scope def self.i18n_prefix(i18n_scope) define_singleton_method :i18n_scope do i18n_scope.to_sym end end self.i18n_prefix :activerecord def self.form_name(name) # 定義 form name (給 form 用的) define_singleton_method :model_name do active_model_name_for(name.to_s.camelize) # Reform::Form::ActiveModel end # NOTE: 這行很可能沒有作用 model(name) end end # Hack Dry::Type 升級 0.15 以後 # 變成強制型別,會造成 params input 空字串時的錯誤 # 這裡是 hack # https://github.com/apotonick/disposable/blob/master/lib/disposable/twin/coercion.rb # https://github.com/dry-rb/dry-types/blob/a4983c88299b6f323a769f783cf956629e61f8ed/lib/dry/types/coercions/params.rb#L86 Dry::Types::Coercions::Params.module_eval do def self.to_int(input, &block) if input.is_a? String Integer(input, 10) else Integer(input) end rescue ArgumentError, TypeError => e return input.to_i if input.respond_to?(:to_i) CoercionError.handle(e, &block) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
super_tools-3.0.1 | lib/super_form/reform.rb |