class Dao::Gateway::ActiveRecord::Base
Public Class Methods
new(source, transformer)
click to toggle source
Calls superclass method
# File lib/dao/gateway/active_record/base.rb, line 7 def initialize(source, transformer) super @black_list_attributes += source_relations end
Public Instance Methods
add_relations(scope, relations, options)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 38 def add_relations(scope, relations, options) case options[:strategy] when :preload scope.preload(*relations) when :includes scope.includes(*relations) else scope.eager_load(*relations) end end
chain(scope, method_name, args, &block)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 32 def chain(scope, method_name, args, &block) scope.public_send(method_name, *args, &block) rescue ::ActiveRecord::RecordNotFound => e raise Dao::Gateway::RecordNotFound, e.message end
delete(domain_id)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 28 def delete(domain_id) record(domain_id).destroy if domain_id.present? end
save!(domain, attributes)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 12 def save!(domain, attributes) record = export(domain, record(domain.id)) record.assign_attributes(attributes) record.save! domain.attributes = import(record, domain.initialized_with).attributes domain rescue ::ActiveRecord::RecordInvalid raise Dao::Gateway::InvalidRecord.new(record.errors.to_hash) rescue ::ActiveRecord::RecordNotFound => e raise Dao::Gateway::RecordNotFound, e.message rescue ::ActiveRecord::RecordNotUnique => e raise Dao::Gateway::RecordNotUnique, e.message rescue Exception => e rescue_with_handler(e) || raise end
with_lock(id, *args, &block)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 53 def with_lock(id, *args, &block) source.transaction do source.lock(*args).find(id) block.call end rescue ::ActiveRecord::StatementInvalid => e raise Dao::Gateway::StatementInvalid, e.message end
with_transaction(&block)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 49 def with_transaction(&block) source.transaction(&block) end
Protected Instance Methods
collection_scope?(relation)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 82 def collection_scope?(relation) if relation.is_a?(::ActiveRecord::Relation) true elsif relation.is_a?(Array) source_scope?(relation.first) else false end end
export(base, record = nil)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 65 def export(base, record = nil) return unless base record ||= source.new attributes = base.attributes.except(*@black_list_attributes) record.assign_attributes(attributes) record end
record(domain_id)
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 74 def record(domain_id) source.find_by_id(domain_id) if domain_id.present? end
source_relations()
click to toggle source
# File lib/dao/gateway/active_record/base.rb, line 78 def source_relations @_relations ||= @source.reflections.keys.map(&:to_sym) end