class ActiveAny::Associations::Builder::Association
Constants
- VALID_OPTIONS
Public Class Methods
build(klass, name, scope, options)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 7 def self.build(klass, name, scope, options) reflection = create_reflection(klass, name, scope, options) define_accessors klass, reflection reflection end
build_scope(scope)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 35 def self.build_scope(scope) new_scope = scope new_scope = proc { instance_exec(&scope) } if scope && scope.arity.zero? new_scope end
create_reflection(klass, name, scope, options)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 23 def self.create_reflection(klass, name, scope, options) if scope.is_a?(::Hash) options = scope scope = nil end validate_options(options) scope = build_scope scope ActiveAny::Reflection.create(macro, name, scope, options, klass) end
define_accessors(klass, reflection)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 43 def self.define_accessors(klass, reflection) mixin = klass.generated_association_methods name = reflection.name define_readers(mixin, name) define_writers(mixin, name) end
define_readers(mixin, name)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 50 def self.define_readers(mixin, name) mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name}(*args) association(:#{name}).reader(*args) end CODE end
define_writers(mixin, name)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 58 def self.define_writers(mixin, name) mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name}=(value) association(:#{name}).writer(value) end CODE end
valid_options(_options)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 15 def self.valid_options(_options) VALID_OPTIONS end
validate_options(options)
click to toggle source
# File lib/active_any/associations/builder/association.rb, line 19 def self.validate_options(options) options.assert_valid_keys(valid_options(options)) end