class Synchronisable::DSL::Association
Association
builder. Subclasses must implement macro method.
Constants
- KIND_KEY_SUFFIX_MAP
Attributes
valid_options[RW]
force_sync[R]
key[R]
kind[R]
model[R]
name[R]
required[R]
Public Class Methods
create(synchronizer, kind, name, options)
click to toggle source
# File lib/synchronisable/dsl/association.rb, line 19 def create(synchronizer, kind, name, options) new(synchronizer, kind, name).create(options) end
new(synchronizer, kind, name)
click to toggle source
# File lib/synchronisable/dsl/association.rb, line 29 def initialize(synchronizer, kind, name) @synchronizer, @kind, @name = synchronizer, kind, name.to_sym @key_suffix = KIND_KEY_SUFFIX_MAP[kind] end
Public Instance Methods
create(options)
click to toggle source
# File lib/synchronisable/dsl/association.rb, line 34 def create(options) validate_options(options) @key = options[:key] @required = options[:required] @force_sync = options[:force_sync] if options[:class_name].present? @model = options[:class_name].constantize end set_defaults @synchronizer.associations[@key] = self end
model_name()
click to toggle source
# File lib/synchronisable/dsl/association.rb, line 50 def model_name @model.to_s.demodulize.underscore.to_sym end
Protected Instance Methods
set_defaults()
click to toggle source
# File lib/synchronisable/dsl/association.rb, line 56 def set_defaults @required ||= false @force_sync ||= false singular_name = @name.to_s.singularize @model ||= singular_name.classify.constantize @key = "#{singular_name}_#{@key_suffix}" unless @key.present? end
Private Instance Methods
validate_options(options)
click to toggle source
# File lib/synchronisable/dsl/association.rb, line 68 def validate_options(options) options.assert_valid_keys(Association.valid_options) end