3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/logic_pro/active_record_types.rb', line 3
def define_types(classes)
classes.each do |active_record_class_name|
active_record_class = "::#{active_record_class_name}".constantize
type_class_name = active_record_class.to_s.gsub('::', '_')
record_constructor = Constructor(active_record_class) do |entity|
if entity.blank? || entity.class.name == active_record_class.name
entity
else
raise "Invalid collection type #{collection.class} for #{active_record_class.name}"
end
end
collection_constructor = Constructor(active_record_class.none.class) do |collection|
if collection.respond_to?(:model) && collection.model.name == active_record_class.name
collection
else
raise "Invalid collection type #{collection.class} for #{active_record_class.name}"
end
end
const_set(type_class_name, record_constructor.meta(class_name: active_record_class.name))
const_set("#{type_class_name}Collection", collection_constructor.meta(class_name: active_record_class.none.class))
end
end
|