I have a class Form that represents a form that a user fills in
The elements on the form are determined through the app and they can be
any type of form field, file, select, text, textarea etc…
a collection of fields on a form
class Form < ActiveRecord::Base
has_many :elements
end
the individual elements of a form
class Element
belongs_to :form
end
refers to an instance of a form as filled in by a user
class FormProfile
has_many :form_element_answers
belongs_to :form
belongs_to :user
end
each individual elements answer by a user
class FormElementAnswer
belongs_to :form_profile
end
When displaying the form to a user the Form object is found then all of
its elements are looped through and displayed on the page with the right
type of input element.
When they save their answers the controller loops through each object in
params and creates a FormElementAnswer row which corresponds to the
FormProfile for that user.
Now I was wondering if there was a simple way of setting up FormProfile
to somehow dynamically know what elements are on that form. So instead
of looping through params and creating a row for each FormElementAnswer
I could just do FormProfile.new(params[:whatever]) and it takes care of
all the work itself in the model.
This way validation would be on FormProfile and not on each individual
FormElementAnswer.
Maybe it would dynamically allocate getters and setters for each element
of the form on FormProfile itself?
Not sure if this clear?