class Guise::HasGuisesBuilder
@api private
Public Class Methods
new(options)
click to toggle source
# File lib/guise/builders.rb, line 6 def initialize(options) @options = options end
Public Instance Methods
build!()
click to toggle source
# File lib/guise/builders.rb, line 10 def build! set_guise_options! define_association! define_scopes! if @options.association_options != DEFAULT_ASSOCIATION_NAME define_association_aliases! end define_introspection_aliases! end
Private Instance Methods
association_name()
click to toggle source
# File lib/guise/builders.rb, line 69 def association_name @options.association_name end
association_name_singular()
click to toggle source
# File lib/guise/builders.rb, line 73 def association_name_singular @options.association_name_singular end
define_association!()
click to toggle source
# File lib/guise/builders.rb, line 29 def define_association! source_class.has_many(@options.association_name, @options.association_options) end
define_association_aliases!()
click to toggle source
# File lib/guise/builders.rb, line 48 def define_association_aliases! source_class.class_eval <<-ASSOCIATION_ALIASES alias_method :guises, :#{association_name} alias_method :guises=, :#{association_name}= alias_method :guise_ids, :#{association_name_singular}_ids alias_method :guise_ids=, :#{association_name_singular}_ids= ASSOCIATION_ALIASES end
define_introspection_aliases!()
click to toggle source
# File lib/guise/builders.rb, line 57 def define_introspection_aliases! source_class.class_eval <<-INTROSPECTION_ALIASES alias_method :has_#{association_name_singular}?, :has_guise? alias_method :has_#{association_name}?, :has_guises? alias_method :has_any_#{association_name}?, :has_any_guises? INTROSPECTION_ALIASES end
define_scopes!()
click to toggle source
# File lib/guise/builders.rb, line 33 def define_scopes! @options.values.each do |value| method_name = value.underscore scope_name = method_name.pluralize source_class.scope scope_name, HasGuisesScope.new(value, @options) source_class.class_eval <<-METHOD def #{method_name}? has_guise?('#{value}') end METHOD end end
set_guise_options!()
click to toggle source
# File lib/guise/builders.rb, line 24 def set_guise_options! source_class.class_attribute :guise_options, instance_writer: false source_class.guise_options = @options end
source_class()
click to toggle source
# File lib/guise/builders.rb, line 65 def source_class @options.source_class end