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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/radiant_setup_create_records_patch.rb', line 3
def create_records(template)
records = template['records']
if records
puts
records.keys.each do |key|
table = key.underscore
if key == "Radiant::Configs" || ActiveRecord::Base.connection.columns(table).map { |c| c.name }.include?("id")
feedback "Importing '#{key.to_s.underscore.humanize.titleize}' table data" do
model = model(key)
model.reset_column_information
record_pairs = order_by_id(records[key])
step do
record_pairs.each do |id, record|
begin
r = model.new(record)
r.id = id
r.save
model.update_all({:created_by_id => record['created_by_id']}, {:id => r.id}) if r.respond_to? :created_by_id
rescue Exception => e
puts "Failed to create record #{id}. Reason: #{e}"
end
end
end
end
else
feedback "Importing '#{key.to_s.underscore.humanize.titleize}' join table data" do
table = key.underscore
record_pairs = records[key].sort
step do
record_pairs.each do |id, record|
begin
sql = "INSERT INTO #{table} (#{record.keys.join(", ")}) VALUES (#{record.values.join(", ")})"
ActiveRecord::Base.connection.execute(sql)
rescue Exception => e
puts "Failed to create record #{id}. Reason: #{e}"
end
end
end
end
end
end
end
end
|