Class: Horza::Adapters::ActiveRecord
Constant Summary
collapse
- INVALID_ANCESTRY_MSG =
'Invalid relation. Ensure that the plurality of your associations is correct.'
- CONTEXT_NAMESPACE =
::ActiveRecord::Base
Instance Attribute Summary
#context
Class Method Summary
collapse
Instance Method Summary
collapse
#collection_entity_klass, #context_for_entity, #expected_errors, #expected_horza_errors, #horza_error_from_orm_error, #not_implemented_error, #single_entity_klass
#create, #create_as_child, #delete, #find_first, #get, #initialize, #update
Class Method Details
.expected_errors_map ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 14
def expected_errors_map
{
::ActiveRecord::RecordNotFound => Horza::Errors::RecordNotFound,
::ActiveRecord::RecordInvalid => Horza::Errors::RecordInvalid,
::ActiveRecord::UnknownAttributeError => Horza::Errors::UnknownAttributeError
}
end
|
.single_entity_klass ⇒ Object
10
11
12
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 10
def single_entity_klass
::Horza::Entities::SingleWithActiveModel
end
|
Instance Method Details
#association(options = {}) ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 74
def association(options = {})
run_and_convert_exceptions do
options = Options.new(options)
base = @context
base = base.includes(options.eager_args) if options.eager_load?
base = base.find(options.id)
result = walk_family_tree(base, options)
return nil if result.nil?
options.target.to_s.plural? ? entity(query(options, result)) : entity(result.attributes)
end
end
|
#create!(options = {}) ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 42
def create!(options = {})
run_and_convert_exceptions do
record = @context.new(options)
record.save!
entity(record.attributes)
end
end
|
#create_as_child!(parent_args, options = {}) ⇒ Object
50
51
52
53
54
55
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 50
def create_as_child!(parent_args, options = {})
run_and_convert_exceptions do
parent = Horza.adapter.context_for_entity(parent_args[:klass]).find(parent_args[:id])
create!(options.merge(parent_args[:klass] => parent))
end
end
|
#delete!(id) ⇒ Object
66
67
68
69
70
71
72
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 66
def delete!(id)
run_and_convert_exceptions do
record = @context.find(id)
record.destroy
true
end
end
|
#find_all(options = {}) ⇒ Object
31
32
33
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 31
def find_all(options = {})
run_and_convert_exceptions { entity(query(options)) }
end
|
#find_first!(options = {}) ⇒ Object
27
28
29
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 27
def find_first!(options = {})
run_and_convert_exceptions { entity(query(options).first!.attributes) }
end
|
#get!(id) ⇒ Object
23
24
25
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 23
def get!(id)
run_and_convert_exceptions { entity(@context.find(id).attributes) }
end
|
#join(options = {}) ⇒ Object
35
36
37
38
39
40
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 35
def join(options = {})
run_and_convert_exceptions do
sql = ArelJoin.sql(self.context, options)
entity(::ActiveRecord::Base.connection.exec_query(sql).to_a)
end
end
|
#to_hash ⇒ Object
89
90
91
92
93
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 89
def to_hash
raise ::Horza::Errors::CannotGetHashFromCollection.new if collection?
raise ::Horza::Errors::QueryNotYetPerformed.new unless @context.respond_to?(:attributes)
@context.attributes
end
|
#update!(id, options = {}) ⇒ Object
57
58
59
60
61
62
63
64
|
# File 'lib/horza/adapters/active_record/active_record.rb', line 57
def update!(id, options = {})
run_and_convert_exceptions do
record = @context.find(id)
record.assign_attributes(options)
record.save!
entity(record.attributes)
end
end
|