module Dynamord::ClassMethods
Public Instance Methods
configure_dependent(name, dep)
click to toggle source
Connection methods from dynamoid to active_record
# File lib/dynamord.rb, line 12 def configure_dependent(name, dep) if dep case dep when :destroy, :delete_all after_destroy { |record| record.send(name.to_sym).destroy_all ? true : false } when :nullify after_destroy { |record| record.send(name.to_sym).update_attributes("#{name}".to_sym => nil) ? true : false} when :restrict_with_exception, :restrict_with_error before_destroy { |record| raise Dynamoid::Errors::RecordNotDestroyed.new(record); false } end end end
dynamoid_has_many(name, options = {})
click to toggle source
# File lib/dynamord.rb, line 116 def dynamoid_has_many(name, options = {}) configure_dependent(name, options[:dependent]) self.has_many name, options end
dynamoid_has_one(name, options = {})
click to toggle source
def dynamoid_has_one_belongs_to(name, options = {})
before_create do |record| object_class = options[:class] || name.to_s.titleize.delete(' ').constantize begin if object_class.where(:id => record.send("#{name}_ids").first).count < 1 true end rescue true end false end self.belongs_to name, options
end
# File lib/dynamord.rb, line 134 def dynamoid_has_one(name, options = {}) configure_dependent(name, options[:dependent]) self.has_many name, options end
from_active_record_belongs_to(name, options = {})
click to toggle source
Connection methods from active_record to dynamoid
# File lib/dynamord.rb, line 92 def from_active_record_belongs_to(name, options = {}) object_class = options[:class] || name.to_s.titleize.delete(' ').constantize if options[:optional] validates "#{name}_id".to_sym, presence: true end self.instance_eval do define_method(name) do |reload = false| if reload self.instance_variable_set("@#{name}", nil) end if self.instance_variable_get("@#{name}").blank? self.instance_variable_set("@#{name}", object_class.where(:id => self.send("#{name}_id")).first) end self.instance_variable_get("@#{name}") end define_method("#{name}=") do |new_instance| self.send("#{name}_id=", new_instance.id) self.instance_variable_set("@#{name}", nil) # self.save end end end
from_active_record_has_many(name, options = {})
click to toggle source
# File lib/dynamord.rb, line 138 def from_active_record_has_many(name, options = {}) plural_name = name.to_s.pluralize foreign_key = options[:foreign_key] || "#{self.name.underscore}_id".to_sym object_class = options[:class] || name.to_s.singularize.titleize.delete(' ').constantize configure_dependent(name, options[:dependent]) self.instance_eval do define_method(plural_name) do |reload = false| if reload self.instance_variable_set("@#{name}", nil) end if self.instance_variable_get("@#{name}").blank? self.instance_variable_set("@#{name}", object_class.where(foreign_key => self.id)) end self.instance_variable_get("@#{name}") end end end
from_active_record_has_one(name, options = {})
click to toggle source
# File lib/dynamord.rb, line 158 def from_active_record_has_one(name, options = {}) foreign_key = options[:foreign_key] || "#{self.name.underscore}_id" object_class = options[:class] || name.to_s.titleize.delete(' ').constantize configure_dependent(name, options[:dependent]) self.instance_eval do define_method(name) do |reload = false| if reload self.instance_variable_set("@#{name}", nil) end if self.instance_variable_get("@#{name}").blank? self.instance_variable_set("@#{name}", object_class.where(foreign_key => self.id)) end self.instance_variable_get("@#{name}") end end end
to_active_record_belongs_to(name, options = {})
click to toggle source
# File lib/dynamord.rb, line 24 def to_active_record_belongs_to(name, options = {}) field "#{name}_id".to_sym, :integer if options[:optional] validates "#{name}_id".to_sym, presence: true end object_class = options[:class] || name.to_s.titleize.delete(' ').constantize self.instance_eval do define_method(name) do |reload = false| if reload self.instance_variable_set("@#{name}", nil) end if self.instance_variable_get("@#{name}").blank? self.instance_variable_set("@#{name}", object_class.where(object_class.primary_key => self.send("#{name}_id")).first) end self.instance_variable_get("@#{name}") end define_method("#{name}=") do |new_instance| self.send("#{name}_id=", new_instance.id) self.instance_variable_set("@#{name}", nil) # self.save end end end
to_active_record_has_many(name, options = {})
click to toggle source
# File lib/dynamord.rb, line 50 def to_active_record_has_many(name, options = {}) plural_name = name.to_s.pluralize foreign_key = options[:foreign_key] || "#{self.name.underscore}_id" object_class = options[:class] || name.to_s.singularize.titleize.delete(' ').constantize configure_dependent(name, options[:dependent]) self.instance_eval do define_method(plural_name) do |reload = false| if reload self.instance_variable_set("@#{name}", nil) end if self.instance_variable_get("@#{name}").blank? self.instance_variable_set("@#{name}", object_class.where(foreign_key => self.id.to_s)) end self.instance_variable_get("@#{name}") end end end
to_active_record_has_one(name, options = {})
click to toggle source
# File lib/dynamord.rb, line 70 def to_active_record_has_one(name, options = {}) foreign_key = options[:foreign_key] || "#{self.name.underscore}_id" object_class = options[:class] || name.to_s.titleize.delete(' ').constantize configure_dependent(name, options[:dependent]) self.instance_eval do define_method(name) do |reload = false| if reload self.instance_variable_set("@#{name}", nil) end if self.instance_variable_get("@#{name}").blank? self.instance_variable_set("@#{name}", object_class.where(foreign_key => self.id.to_s).first) end self.instance_variable_get("@#{name}") end end end