Module: Orms::ActiveRecordVersion2

Includes:
Yaml::Conditions, Yaml::QueryBuilder
Included in:
ActiveRecord::Base
Defined in:
lib/orms/active_record/version_2.rb,
lib/orms/active_record/version2/delayed_job.rb

Defined Under Namespace

Modules: DelayedJob

Constant Summary

Constants included from Yaml::QueryBuilder

Yaml::QueryBuilder::ParseObjectFromYaml

Constants included from Yaml::Conditions

Yaml::Conditions::VERSION

Instance Method Summary collapse

Methods included from Yaml::QueryBuilder

#__attempt_to_load__, #__build_individual_yaml_conditions__, #__build_yaml_attributes__, #__build_yaml_conditions__, #__build_yaml_conditions_for_list__, #__check_yaml_nested_hierarchy__, #__check_yaml_nested_hierarchy_on_list__, #__filter_yaml_attributes_to_check_on__, #__include_db_adapter_if_necessary__, #__join_yaml_conditions__, #__prepare_yaml_conditions__, #__resolve_yaml_conditions_by_structure__, #__serialize__to_yaml_value__, #__yaml_deserialize__, #__yaml_load_object_recursively__, #__yaml_method_or_key__, #__yaml_same_class__

Instance Method Details

#__include_delayedjob_adapter_if_necessary__Object



7
8
9
10
# File 'lib/orms/active_record/version_2.rb', line 7

def __include_delayedjob_adapter_if_necessary__
  self.send(:include, ::Orms::ActiveRecordVersion2::DelayedJob)
  @delayed_adapter_included = true
end

#find_with_yaml_conditions(*args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/orms/active_record/version_2.rb', line 12

def find_with_yaml_conditions(*args)
  options = args.last.is_a?(::Hash) ? args.last : {}
  yaml_conditions = options[:yaml_conditions]
  flat_check = yaml_conditions.delete(:flat_check) unless yaml_conditions.nil?
  return find_without_yaml_conditions(*args) if yaml_conditions.blank?
  __include_db_adapter_if_necessary__ if @db_adapter_included.nil?
  __include_delayedjob_adapter_if_necessary__ if defined?(Delayed::Job) && self == Delayed::Job && @delayed_adapter_included.nil?
  options = args.extract_options!
  adapted_args = args << refactor_options(options)
  selector = adapted_args.shift
  result = find_without_yaml_conditions(flat_check ? selector : :all, *adapted_args)
  if flat_check.present?
    result
  else
    result = result.select do |o|
      __check_yaml_nested_hierarchy__(o, __prepare_yaml_conditions__(yaml_conditions))
    end
    selector == :all ? result : result.send(selector.to_sym)
  end
end

#refactor_options(options) ⇒ Object



33
34
35
36
37
38
# File 'lib/orms/active_record/version_2.rb', line 33

def refactor_options(options)
  sql_conditions = sanitize_sql(options.delete(:conditions))
  yaml_conditions = __prepare_yaml_conditions__(options.delete(:yaml_conditions))
  yaml_conditions.symbolize_keys! if yaml_conditions.is_a?(Hash)
  options.merge!({ :conditions => __join_yaml_conditions__(sql_conditions, __build_yaml_conditions__(yaml_conditions)) })
end