Module: Cms::DataLoader
- Defined in:
- lib/cms/data_loader.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/cms/data_loader.rb', line 6
def method_missing(method_name, *args)
if md = method_name.to_s.match(/^create_(.+)$/)
model_name = "Cms/#{md[1]}".classify.constantize.name
begin
super unless model_name.classify.constantize.ancestors.include?(ActiveRecord::Base)
rescue NameError => e
super
end
self.create(model_name, args[0], args[1] || {})
elsif @data && @data.has_key?(method_name)
record = @data[method_name][args.first]
record ? record.class.find(record.id) : nil
else
super
end
end
|
Instance Method Details
#create(model_name, record_name, data = {}) ⇒ Object
25
26
27
28
29
30
31
32
33
|
# File 'lib/cms/data_loader.rb', line 25
def create(model_name, record_name, data={})
puts "-- create_#{model_name}(:#{record_name})" unless Cms::DataLoader.silent_mode
@data ||= {}
model_storage_name = model_name.demodulize.underscore.pluralize.to_sym
@data[model_storage_name] ||= {}
model = model_name.classify.constantize.new(data)
model.save!
@data[model_storage_name][record_name] = model
end
|