class Guise::GuiseForBuilder

@api private

Public Class Methods

new(association_class, options, association_options) click to toggle source
# File lib/guise/builders.rb, line 80
def initialize(association_class, options, association_options)
  @association_class = association_class
  @options = options

  # if `:validate` is specified, coerce the value into a boolean, otherwise, default to
  # `true`
  @define_validations = if association_options.key?(:validate)
                          !!association_options.delete(:validate)
                        else
                          true
                        end

  @association_options = @options.default_association_options.merge(association_options)
end

Public Instance Methods

build!() click to toggle source
# File lib/guise/builders.rb, line 95
def build!
  update_guise_options!
  define_association!
  define_scopes!

  if define_validations?
    define_validations!
  end
end

Private Instance Methods

define_association!() click to toggle source
# File lib/guise/builders.rb, line 115
def define_association!
  @association_class.belongs_to(@options.source_association_name, @association_options)
end
define_scopes!() click to toggle source
# File lib/guise/builders.rb, line 119
def define_scopes!
  @options.values.each do |value|
    @association_class.scope(
      value.underscore.pluralize,
      GuiseForScope.new(value, @options)
    )
  end
end
define_validations!() click to toggle source
# File lib/guise/builders.rb, line 128
def define_validations!
  @association_class.validates(
    @options.attribute,
    uniqueness: { scope: @options.association_options[:foreign_key] },
    presence: true,
    inclusion: { in: @options.values }
  )
end
define_validations?() click to toggle source
# File lib/guise/builders.rb, line 107
def define_validations?
  @define_validations
end
update_guise_options!() click to toggle source
# File lib/guise/builders.rb, line 111
def update_guise_options!
  @options.association_class = @association_class
end