Module: ActForm::Model
- Extended by:
- ActiveSupport::Concern
- Includes:
- Attributes, Merge, ActiveModel::Model
- Included in:
- Base
- Defined in:
- lib/act_form/model.rb
Instance Method Summary collapse
-
#init_by(record, **attrs) ⇒ Object
Record must respond_to attributes method.
- #initialize(attrs = {}) ⇒ Object
- #persisted? ⇒ Boolean
- #record=(record) ⇒ Object
- #save(target = nil) ⇒ Object
- #sync(target) ⇒ Object
Methods included from Attributes
Instance Method Details
#init_by(record, **attrs) ⇒ Object
Record must respond_to attributes method
30 31 32 33 34 |
# File 'lib/act_form/model.rb', line 30 def init_by(record, **attrs) record = record _attrs = @record.attributes.extract! *self.class.attribute_set.keys.map(&:to_s) assign_attributes _attrs.merge(attrs) end |
#initialize(attrs = {}) ⇒ Object
17 18 19 |
# File 'lib/act_form/model.rb', line 17 def initialize(attrs={}) super attrs.select { |k, _| respond_to?("#{k}=") } end |
#persisted? ⇒ Boolean
53 54 55 |
# File 'lib/act_form/model.rb', line 53 def persisted? !!@persisted end |
#record=(record) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/act_form/model.rb', line 21 def record=(record) if record.respond_to?(:attributes) @record = record else raise ArgumentError, 'Record must respond to attributes method!' end end |
#save(target = nil) ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/act_form/model.rb', line 43 def save(target = nil) target ||= @record if valid? sync(target) @persisted = target.save else false end end |
#sync(target) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/act_form/model.rb', line 36 def sync(target) self.class.attribute_set.keys.each do |attr| next unless target.respond_to?(attr) target.public_send "#{attr}=", public_send(attr) end end |