class Fabrication::Generator::Sequel

Public Class Methods

new(klass) click to toggle source
Calls superclass method Fabrication::Generator::Base::new
# File lib/fabrication/generator/sequel.rb, line 4
def initialize(klass)
  super
  load_instance_hooks
end
supports?(klass) click to toggle source
# File lib/fabrication/generator/sequel.rb, line 9
def self.supports?(klass)
  defined?(::Sequel) && defined?(::Sequel::Model) && klass.ancestors.include?(::Sequel::Model)
end

Public Instance Methods

persist() click to toggle source
# File lib/fabrication/generator/sequel.rb, line 23
def persist
  _instance.save(raise_on_failure: true)
end
set_attributes() click to toggle source
# File lib/fabrication/generator/sequel.rb, line 13
def set_attributes
  _attributes.each do |field_name, value|
    if value.is_a?(Array) && (association = association_for(field_name))
      set_association(association, field_name, value)
    else
      set_attribute(field_name, value)
    end
  end
end

Private Instance Methods

association_for(field_name) click to toggle source
# File lib/fabrication/generator/sequel.rb, line 29
def association_for(field_name)
  resolved_class.association_reflections[field_name]
end
load_instance_hooks() click to toggle source
# File lib/fabrication/generator/sequel.rb, line 44
def load_instance_hooks
  klass = resolved_class.respond_to?(:cti_base_model) ? resolved_class.cti_models.first : resolved_class
  klass.plugin :instance_hooks unless klass.new.respond_to? :after_save_hook
end
set_association(association, field_name, value) click to toggle source
# File lib/fabrication/generator/sequel.rb, line 37
def set_association(association, field_name, value)
  _instance.associations[field_name] = value
  _instance.after_save_hook do
    value.each { |o| _instance.send(association.add_method, o) }
  end
end
set_attribute(field_name, value) click to toggle source
# File lib/fabrication/generator/sequel.rb, line 33
def set_attribute(field_name, value)
  _instance.send("#{field_name}=", value)
end