module SlayerRails::Extensions::Form
Public Class Methods
from_json(json)
click to toggle source
# File lib/slayer_rails/extensions/form.rb, line 38 def from_json(json) from_params(JSON.parse(json)) end
from_model(model)
click to toggle source
# File lib/slayer_rails/extensions/form.rb, line 30 def from_model(model) attr_hash = attribute_set.map(&:name) .select { |attr_name| model.respond_to?(attr_name) } .map { |attr_name| [attr_name, model.public_send(attr_name)] } new(attr_hash.to_h) end
from_params(params, additional_params: {}, root_key: nil)
click to toggle source
# File lib/slayer_rails/extensions/form.rb, line 16 def from_params(params, additional_params: {}, root_key: nil) params = params.respond_to?(:to_unsafe_h) ? params.to_unsafe_h : params.to_h params = params.deep_symbolize_keys attr_names = attribute_set.map(&:name) params = params.fetch(root_key, {}) if root_key.present? attr_hash = params .merge(params.slice(*attr_names)) .merge(additional_params) new(attr_hash) end
Public Instance Methods
validate!()
click to toggle source
# File lib/slayer_rails/extensions/form.rb, line 11 def validate! raise Slayer::FormValidationError, errors unless valid? end