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