Class: Rectify::Form
- Inherits:
-
Object
- Object
- Rectify::Form
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/rectify/form.rb
Instance Attribute Summary collapse
-
#context ⇒ Object
readonly
Returns the value of attribute context.
Class Method Summary collapse
- .ensure_hash(object) ⇒ Object
- .from_json(json) ⇒ Object
- .from_model(model) ⇒ Object
- .from_params(params, additional_params = {}) ⇒ Object
- .hash_from(params) ⇒ Object
- .infer_model_name ⇒ Object
- .mimic(model_name) ⇒ Object
- .mimicked_model_name ⇒ Object
- .model_name ⇒ Object
Instance Method Summary collapse
- #attributes ⇒ Object
- #attributes_with_values ⇒ Object
- #before_validation ⇒ Object
- #invalid?(options = {}) ⇒ Boolean
- #map_model(model) ⇒ Object
- #persisted? ⇒ Boolean
- #to_key ⇒ Object
- #to_model ⇒ Object
- #to_param ⇒ Object
- #valid?(options = {}) ⇒ Boolean
- #with_context(new_context) ⇒ Object
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
6 7 8 |
# File 'lib/rectify/form.rb', line 6 def context @context end |
Class Method Details
.ensure_hash(object) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/rectify/form.rb', line 57 def self.ensure_hash(object) if object.is_a?(Hash) object else {} end end |
.from_json(json) ⇒ Object
29 30 31 |
# File 'lib/rectify/form.rb', line 29 def self.from_json(json) from_params(JSON.parse(json)) end |
.from_model(model) ⇒ Object
25 26 27 |
# File 'lib/rectify/form.rb', line 25 def self.from_model(model) Rectify::BuildFormFromModel.new(self, model).build end |
.from_params(params, additional_params = {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/rectify/form.rb', line 10 def self.from_params(params, additional_params = {}) params_hash = hash_from(params) mimicked_params = ensure_hash(params_hash[mimicked_model_name]) attributes_hash = params_hash .merge(mimicked_params) .merge(additional_params) formatted_attributes = FormatAttributesHash .new(attribute_set) .format(attributes_hash) new(formatted_attributes) end |
.hash_from(params) ⇒ Object
52 53 54 55 |
# File 'lib/rectify/form.rb', line 52 def self.hash_from(params) params = params.to_unsafe_h if params.respond_to?(:to_unsafe_h) params.with_indifferent_access end |
.infer_model_name ⇒ Object
41 42 43 44 45 46 |
# File 'lib/rectify/form.rb', line 41 def self.infer_model_name class_name = name.split("::").last return :form if class_name == "Form" class_name.chomp("Form").underscore.to_sym end |
.mimic(model_name) ⇒ Object
33 34 35 |
# File 'lib/rectify/form.rb', line 33 def self.mimic(model_name) @model_name = model_name.to_s.underscore.to_sym end |
.mimicked_model_name ⇒ Object
37 38 39 |
# File 'lib/rectify/form.rb', line 37 def self.mimicked_model_name @model_name || infer_model_name end |
.model_name ⇒ Object
48 49 50 |
# File 'lib/rectify/form.rb', line 48 def self.model_name ActiveModel::Name.new(self, nil, mimicked_model_name.to_s.camelize) end |
Instance Method Details
#attributes ⇒ Object
98 99 100 |
# File 'lib/rectify/form.rb', line 98 def attributes super.except(:id) end |
#attributes_with_values ⇒ Object
102 103 104 |
# File 'lib/rectify/form.rb', line 102 def attributes_with_values attributes.reject { |attribute| public_send(attribute).nil? } end |
#before_validation ⇒ Object
112 113 114 115 |
# File 'lib/rectify/form.rb', line 112 def before_validation # Implement this in your form object if you would like to perform some # some processing before validation happens (optional). end |
#invalid?(options = {}) ⇒ Boolean
82 83 84 |
# File 'lib/rectify/form.rb', line 82 def invalid?( = {}) !valid?() end |
#map_model(model) ⇒ Object
106 107 108 109 110 |
# File 'lib/rectify/form.rb', line 106 def map_model(model) # Implement this in your form object for custom mapping from model to form # object as part of the `.from_model` call after matching attributes are # populated (optional). end |
#persisted? ⇒ Boolean
65 66 67 |
# File 'lib/rectify/form.rb', line 65 def persisted? id.present? && id.to_i > 0 end |
#to_key ⇒ Object
86 87 88 |
# File 'lib/rectify/form.rb', line 86 def to_key [id] end |
#to_model ⇒ Object
90 91 92 |
# File 'lib/rectify/form.rb', line 90 def to_model self end |
#to_param ⇒ Object
94 95 96 |
# File 'lib/rectify/form.rb', line 94 def to_param id.to_s end |
#valid?(options = {}) ⇒ Boolean
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/rectify/form.rb', line 69 def valid?( = {}) before_validation = {} if .blank? context = [:context] validations = [super(context)] validations << form_attributes_valid? unless [:exclude_nested] validations << array_attributes_valid? unless [:exclude_arrays] validations.all? end |
#with_context(new_context) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/rectify/form.rb', line 117 def with_context(new_context) @context = if new_context.is_a?(Hash) OpenStruct.new(new_context) else new_context end attributes_that_respond_to(:with_context) .each { |f| f.with_context(context) } array_attributes_that_respond_to(:with_context) .each { |f| f.with_context(context) } self end |