class Embedson::Model::MethodBuilder
Attributes
field_name[R]
klass[R]
options[R]
Public Class Methods
new(klass, name, options)
click to toggle source
# File lib/embedson/model/method_builder.rb, line 8 def initialize(klass, name, options) @klass = klass @field_name = name @options = options end
Public Instance Methods
column_name()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 28 def column_name @column_name ||= options.fetch(:column_name, nil) || field_name end
embedded()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 19 def embedded EmbeddedBuilder.new(self).define generate_common end
embeds()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 14 def embeds EmbedsBuilder.new(self).define generate_common end
hash_method()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 24 def hash_method @hash_method ||= options.fetch(:hash_method, nil) || :to_h end
instance_var_name()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 36 def instance_var_name @instance_var_name ||= "@#{field_name}" end
inverse_get()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 40 def inverse_get @inverse_get ||= options.fetch(:inverse_of, nil) || klass.name.demodulize.tableize.singularize end
inverse_set()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 44 def inverse_set @inverse_set ||= "#{inverse_get}=" end
Private Instance Methods
generate_common()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 50 def generate_common methods_for_both.each do |meth| klass.class_exec self, &self.method(meth) end end
methods_for_both()
click to toggle source
# File lib/embedson/model/method_builder.rb, line 56 def methods_for_both [:verify_arg_klass] end
verify_arg_klass(builder)
click to toggle source
# File lib/embedson/model/method_builder.rb, line 60 def verify_arg_klass(builder) klass.send(:define_method, "#{field_name}_verify_arg_klass") do |arg| unless arg.nil? || arg.is_a?(builder.related_klass_name.constantize) raise ClassTypeError.new(arg.class.name, builder.related_klass_name) end end klass.send(:private, "#{field_name}_verify_arg_klass") end