Skip to content

Instantly share code, notes, and snippets.

@primableatom
Created March 19, 2014 13:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save primableatom/9641560 to your computer and use it in GitHub Desktop.
Save primableatom/9641560 to your computer and use it in GitHub Desktop.
class DynamicForm < ActiveRecord::Base
....
has_many :field_definitions, :dependent => :destroy
def build_field_definitions(definitions)
JSON.parse(definitions).each do |definition|
puts definition.class
self.field_definitions << FieldDefinition.new(extract_field_definition(definition))
end
end
def extract_field_definition(definition)
definition = definition.symbolize_keys
{
:field_name => definition[:name],
:label => definition[:fieldLabel],
:data_type => DataType.find_by_description(definition[:xtype])
}
end
end
#dynamic_form_spec
it "should save field definitions while saving form" do
field_definitions = "[{\"xtype\":\"textfield\",\"name\":\"Email\",\"fieldLabel\":\"Email\",\"display_in_grid\":true,\"searchable\":true,\"labelWidth\":75,\"validator_function\":\"validateEmail(v)\"},{\"xtype\":\"textfield\",\"name\":\"Name\",\"fieldLabel\":\"Name\",\"display_in_grid\":true,\"searchable\":true,\"labelWidth\":75},{\"xtype\":\"checkbox\",\"name\":\"Admin\",\"fieldLabel\":\"Admin\",\"display_in_grid\":true,\"searchable\":true,\"labelWidth\":75,\"inputValue\":true,\"uncheckedValue\":false},{\"xtype\":\"numberfield\",\"name\":\"Age\",\"fieldLabel\":\"Age\",\"display_in_grid\":true,\"searchable\":true,\"labelWidth\":75}]"
dynamic_form = DynamicForm.new(:model_name => "Test")
dynamic_form.stub!(:default_form_check).and_return("something")
dynamic_form.build_field_definitions(field_definitions)
dynamic_form.save.should eq true
dynamic_form.field_definitions.first.should be_an_instance_of(FieldDefinition)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment