lib/reform/form/active_model.rb in reform-2.0.0.rc3 vs lib/reform/form/active_model.rb in reform-2.0.0

- old
+ new

@@ -1,56 +1,15 @@ -require 'reform/form/active_model/model_validations' +require "reform/form/active_model/model_validations" +require "reform/form/active_model/form_builder_methods" +require "uber/delegates" module Reform::Form::ActiveModel - module FormBuilderMethods # TODO: rename to FormBuilderCompat. - def self.included(base) - base.extend ClassMethods # ::model_name - end - - module ClassMethods - private - - # TODO: add that shit in Form#present, not by overriding ::property. - def property(name, options={}, &block) - super.tap do |definition| - add_nested_attribute_compat(name) if definition[:twin] # TODO: fix that in Rails FB#1832 work. - end - end - - # The Rails FormBuilder "detects" nested attributes (which is what we want) by checking existance of a setter method. - def add_nested_attribute_compat(name) - define_method("#{name}_attributes=") {} # this is why i hate respond_to? in Rails. - end - end - - # Modify the incoming Rails params hash to be representable compliant. - def deserialize!(params) - # this only happens in a Hash environment. other engines have to overwrite this method. - schema.each do |dfn| - rename_nested_param_for!(params, dfn) - end - - super(params) - end - - private - def rename_nested_param_for!(params, dfn) - nested_name = "#{dfn.name}_attributes" - return unless params.has_key?(nested_name) - - value = params["#{dfn.name}_attributes"] - value = value.values if dfn[:collection] - - params[dfn.name] = value - end - end # FormBuilderMethods - - def self.included(base) base.class_eval do extend ClassMethods register_feature ActiveModel + extend Uber::Delegates delegates :model, *[:persisted?, :to_key, :to_param, :id] # Uber::Delegates def to_model # this is called somewhere in FormBuilder and ActionController. self end