Class: Fabrication::Generator::Sequel

Inherits:
Base
  • Object
show all
Defined in:
lib/fabrication/generator/sequel.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#_klass, #build, #build_instance, #build_instance_with_constructor_override, #build_instance_with_init_callback, #create, #execute_callbacks, #method_missing, #respond_to_missing?, #to_hash, #to_params

Constructor Details

#initialize(klass) ⇒ Sequel

Returns a new instance of Sequel.



4
5
6
7
# File 'lib/fabrication/generator/sequel.rb', line 4

def initialize(klass)
  super
  load_instance_hooks
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Fabrication::Generator::Base

Class Method Details

.supports?(klass) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/fabrication/generator/sequel.rb', line 9

def self.supports?(klass)
  defined?(::Sequel) && defined?(::Sequel::Model) && klass.ancestors.include?(::Sequel::Model)
end

Instance Method Details

#persistObject



26
27
28
# File 'lib/fabrication/generator/sequel.rb', line 26

def persist
  _instance.save(raise_on_failure: true)
end

#set_attributesObject



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/fabrication/generator/sequel.rb', line 13

def set_attributes
  _attributes.each do |key, value|
    if (reflection = resolved_class.association_reflections[key]) && value.is_a?(Array)
      _instance.associations[key] = value
      _instance.after_save_hook do
        value.each { |o| _instance.send(reflection.add_method, o) }
      end
    else
      _instance.send("#{key}=", value)
    end
  end
end