Description
I am trying to insert ids of few number values from one table (crosswordcores) to another table (cwdrilldownimports) but the ids are not getting inserted and number values remain same. This is happening only for this column and other two columns(refidclue
,refidword
) are working as expected.
Expected:
72,74,301,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'
Actual:
72,74,1,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'
Log excerpt:
Started POST "/admin/crossworddrilldowns/do_import" for 127.0.0.1 at 2019-07-26 09:32:26 +0530
Processing by Admin::CrossworddrilldownsController#do_import as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"8d8HXBuTco5MRIOo/hHPiB0wDgKUqZ8QhCBV8Mjz4QRKFMPTT09Lt0AbJxrjKgv/UqjtA0zsAb/mLw90kCMa6Q==", "active_admin_import_model"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0xae0927e4 @tempfile=#Tempfile:/tmp/RackMultipart20190726-4300-1uyepuv.csv, @original_filename="cwdrilldown.csv", @content_type="text/csv", @headers="Content-Disposition: form-data; name="active_admin_import_model[file]"; filename="cwdrilldown.csv"\r\nContent-Type: text/csv\r\n">}, "commit"=>"Import"}
AdminUser Load (1.4ms) SELECT admin_users
.* FROM admin_users
WHERE admin_users
.id
= 1 ORDER BY admin_users
.id
ASC LIMIT 1
SQL (95.4ms) DELETE FROM cwdrilldownimports
(0.7ms) BEGIN
["1", "4", "6", "8", "10", "11", "12", "14", "16", "18", "20", "21", "2", "3", "5", "7", "9", "13", "15", "17", "19"]
(1.3ms) SELECT words
.Word
, WordID
FROM words
WHERE words
.Word
IN ('ಬಂಕಾಪುರ', 'ಗರಗಸ', 'ವರೇಣ್ಯ', 'ಕರಗ', 'ಹರಿತ', 'ದಾನವ', 'ಭವನ', 'ಹೂಬನ', 'ನಗಾರಿ', 'ಮರುಕ', 'ಮನೆತನ', 'ಸವಿನಯ', 'ಕಾತುರ', 'ರವ', 'ಗಣ್ಯ', 'ಗಜ್ಜರಿ', 'ರೇವತಿ', 'ಗಗನಯಾನ', 'ಹಯವದನ', 'ಅದಿರು', 'ಬದನೆ', 'ಗಾಯನ', 'ಮನ', 'ಕಸ')
(1.0ms) SELECT clues
.Clue
, clues
.ClueId
FROM clues
WHERE clues
.Clue
IN ('ಅಂಟಿನ ಈ ನಗರದವನು ಬಹಾದ್ದೂರು ಗಂಡು', 'ನಗರದಲ್ಲಿ ಆಗಸ ನೋಡಿದವರಿಗೆ ಸಿಕ್ಕ ರಂಪ', 'ಯತಿಯಂತೆ ಶ್ರೇಷ್ಠನಾದವನು', 'ಧರ್ಮರಾಯನ ದೇಗುಲದಿಂದ ಹೊರಡುವ ಉತ್ಸವ', 'ವಿಷ್ಣುವಿನ ಹೆಸರಿನಲ್ಲಿ ಬಂದದ್ದು ಚೂಪಾಗಿದೆ', 'ದಾನ ನೀಡಲು ಮುಂದೆ ಬಂದ ರಾಕ್ಷಸ', 'ಭವ್ಯವಾದ ಮನೆ ವನದಲ್ಲಿ ನಿರ್ಮಾಣವಾಗಿದೆ', 'ಪುಷ್ಪಗಳಿಂದ ಕೂಡಿದ ತೋಟ', 'ಗಾನಕ್ಕೆ ತಕ್ಕಂತೆ ನರಿ ನುಡಿಸಿದ ವಾದ್ಯ', 'ಮಕರದ ಬಗ್ಗೆ ಮೂಡಿದ ಕನಿಕರ', 'ಮನದಲ್ಲಿ ತೆನೆ ಮೂಡಿಸಿದ ವಂಶ', 'ವಿನಯವಾದ ಸಿಹಿ ಮೃದುವಾಗಿದೆ', 'ತುರಗಕ್ಕೆ ವೇಗವಾಗಿ ಹೋಗುವ ಆತುರ', 'ಸರವಣನಲ್ಲಿ ತುಂಬಿದ ಶಬ್ದ', 'ಪುಣ್ಯ ಮಾಡಿದ ಈತ ದೊಡ್ಡ ಮನುಷ್ಯ', 'ಗರಿ ಮೂಡಿಸಿಕೊಂಡ ಭಕ್ಷ', 'ಇಪ್ಪತ್ತೇಳು ನಕ್ಷತ್ರಗಳಲ್ಲಿ ಕೊನೆಯದು ಈ ತಾರೆ', 'ಆಕಾಶದಲ್ಲಿ ಕೈÉಗೊಂಡ ಗಹನವಾದ ಯಾತ್ರೆ', 'ಕುದುರೆಯ ಮುಖವನ್ನು ಹೊಂದಿದವನು ಹರೆಯದಲ್ಲಿ ಬಂದ', 'ಭೂಮಿ ಅದುರಿದಾಗ ಸಿಕ್ಕ ಖನಿಜ', 'ಬದಲಾವಣೆಗೊಂಡ ತರಕಾರಿ', 'ಗಾಯತ್ರಿಯನ್ನು ಒಲಿಸಿಕೊಳ್ಳಲು ಹಾಡಿದ ಹಾಡು', 'ಮದನ ಹೊಂದಿದ ಚಿತ್ತ', 'ರಸದ ಜೊತೆ ಬಂದ ನಿರುಪಯುಕ್ತ ವಸ್ತು')
(1.5ms) SELECT crosswordcores
.NumberValue
, crosswordcores
.CrosswordCoreId
FROM crosswordcores
WHERE crosswordcores
.NumberValue
IN (1, 4, 6, 8, 10, 11, 12, 14, 16, 18, 20, 21, 2, 3, 5, 7, 9, 13, 15, 17, 19) AND crosswordcores
.RefIdCrossWordHeader
= 4
{1=>301, 2=>303, 3=>304, 4=>306, 5=>308, 6=>313, 7=>314, 8=>319, 9=>321, 10=>325, 11=>338, 12=>342, 13=>350, 14=>355, 15=>356, 16=>361, 17=>362, 18=>367, 19=>369, 20=>373, 21=>378}
Cwdrilldownimport Create Many Without Validations Or Callbacks (15.8ms) INSERT INTO cwdrilldownimports
(refidclue
,refidword
,cluenumber
,refidorientation
,refidcrosswordheader
,createdby
,created_at
,updated_at
) VALUES (72,74,1,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(73,75,4,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(74,76,6,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(75,77,8,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(76,78,10,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(77,79,11,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(78,80,12,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(79,81,14,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(80,82,16,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(81,83,18,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(82,84,20,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(83,85,21,1,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(84,86,2,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(85,87,3,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(86,88,4,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(87,89,5,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(88,90,7,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(89,91,9,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(90,92,10,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(91,93,13,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(92,94,15,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(93,95,17,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(94,96,18,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26'),(95,97,19,2,4,'1','2019-07-26 04:02:26','2019-07-26 04:02:26') ON DUPLICATE KEY UPDATE cwdrilldownimports
.updated_at
=VALUES(updated_at
)
(39.5ms) COMMIT
Redirected to http://localhost:3000/admin/crossworddrilldowns/import
Completed 302 Found in 258ms (ActiveRecord: 166.7ms)
admin/crossworddrilldowns.rb
ActiveAdmin.register Crossworddrilldown do
See permitted parameters documentation:
https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
permit_params :list, :of, :attributes, :on, :model
or
permit_params do
permitted = [:permitted, :attributes]
permitted << :other if params[:action] == 'create' && current_user.admin?
permitted
end
before_action only: [:do_import] do
Thread.current['import.Clueimport.createdby'] = current_admin_user.id
end
active_admin_import validate: true,
timestamps: true,
resource_class: Cwdrilldownimport,
template_object: ActiveAdminImport::Model.new(
hint: "file will be imported with such header format: 'refidclue','refidword','refidorientation'",
csv_headers: ["refidclue","refidword","cluenumber","refidorientation","refidcrosswordheader","createdby"],
csv_options: { col_sep: ";",row_sep: nil, quote_char: '"' }),
headers_rewrites: { :'refidword' => :refidword, :'refidclue' => :refidclue, :'cluenumber' => :cluenumber, :'refidcrosswordheader' => :refidcrosswordheader },
before_import: proc{ Cwdrilldownimport.delete_all },
before_batch_import: ->(importer){
importer.csv_lines.map{|line| line <<Thread.current['import.Clueimport.createdby']}
words = importer.values_at(:refidword)
clues = importer.values_at(:refidclue)
cluenumbers = importer.values_at(:cluenumber)
Rails.logger.info cluenumbers
headerids = importer.values_at(:refidcrosswordheader)
wordnames = Word.where(Word: words).pluck(:Word, :WordID)
cluenames = Clue.where(Clue: clues).pluck(:Clue, :ClueId)
cluenumnames = Crosswordcore.where(NumberValue: cluenumbers, RefIdCrossWordHeader: headerids).pluck(:NumberValue, :CrosswordCoreId)
woptions = Hash[*wordnames.flatten]
coptions = Hash[*cluenames.flatten]
cnumoptions = Hash[*cluenumnames.flatten]
Rails.logger.info cnumoptions
importer.batch_replace(:refidword, woptions)
importer.batch_replace(:refidclue, coptions)
importer.batch_replace(:cluenumber, cnumoptions)
}#,
# after_import: proc{
# Crossworddrilldown.transaction do
# Crossworddrilldown.connection.execute('INSERT INTO crossworddrilldowns (RefIdCrossWordHeader, RefIdWord, RefIdClue, RefIdOrientation,CreatedDate,CreatedBy, UpdatedDate, UpdatedBy, ClueNumber)
# (SELECT refidcrosswordheader, refidword, refidclue, refidorientation, created_at, createdby, updated_at, updatedby, cluenumber FROM cwdrilldownimports)') if Rails.env.development?
# Crossworddrilldown.connection.execute('INSERT INTO crossworddrilldowns ("RefIdCrossWordHeader", "RefIdWord", "RefIdClue", "RefIdOrientation","CreatedDate","CreatedBy", "UpdatedDate", "UpdatedBy", "ClueNumber")
# (SELECT refidcrosswordheader, refidword, refidclue, refidorientation, created_at, createdby, updated_at, updatedby, cluenumber FROM cwdrilldownimports)') if Rails.env.production?
# end
# }
controller do
def crossworddrilldown_params
params.require(:crossworddrilldown).permit(:RefIdCrossWordHeader,:RefIdWord,:RefIdClue,:RefIdOrientation,:CreatedDate,:CreatedBy,:UpdatedDate,:UpdatedBy,:ClueNumber)
end
end
end
Tables
create_table "crosswordcores", primary_key: "CrosswordCoreId", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", comment: "Contains core details like checkerbox namings, drafted or finalized details etc" do |t|
t.integer "RefIdCrossWordHeader"
t.datetime "CreatedDate", null: false
t.string "CreatedBy", limit: 100, null: false
t.datetime "UpdatedDate"
t.string "UpdatedBy", limit: 100
t.integer "CellId", null: false
t.integer "NumberValue"
t.string "NumberBox", limit: 100
t.string "ColorBox", limit: 100
t.index ["RefIdCrossWordHeader"], name: "RefIdCrosswordDrillDown_idx", using: :btree
end
create_table "cwdrilldownimports", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "refidcrosswordheader", null: false
t.integer "refidword", null: false
t.integer "refidclue", null: false
t.integer "refidorientation", null: false
t.datetime "created_at", null: false
t.string "createdby", null: false
t.datetime "updated_at"
t.string "updatedby"
t.integer "cluenumber", null: false
end
CSV file
"ಅಂಟಿನ ಈ ನಗರದವನು ಬಹಾದ್ದೂರು ಗಂಡು";"ಬಂಕಾಪುರ";1;1;4
"ನಗರದಲ್ಲಿ ಆಗಸ ನೋಡಿದವರಿಗೆ ಸಿಕ್ಕ ರಂಪ";"ಗರಗಸ";4;1;4
"ಯತಿಯಂತೆ ಶ್ರೇಷ್ಠನಾದವನು";"ವರೇಣ್ಯ";6;1;4
"ಧರ್ಮರಾಯನ ದೇಗುಲದಿಂದ ಹೊರಡುವ ಉತ್ಸವ";"ಕರಗ";8;1;4
"ವಿಷ್ಣುವಿನ ಹೆಸರಿನಲ್ಲಿ ಬಂದದ್ದು ಚೂಪಾಗಿದೆ";"ಹರಿತ";10;1;4
"ದಾನ ನೀಡಲು ಮುಂದೆ ಬಂದ ರಾಕ್ಷಸ";"ದಾನವ";11;1;4
"ಭವ್ಯವಾದ ಮನೆ ವನದಲ್ಲಿ ನಿರ್ಮಾಣವಾಗಿದೆ";"ಭವನ";12;1;4
"ಪುಷ್ಪಗಳಿಂದ ಕೂಡಿದ ತೋಟ";"ಹೂಬನ";14;1;4
"ಗಾನಕ್ಕೆ ತಕ್ಕಂತೆ ನರಿ ನುಡಿಸಿದ ವಾದ್ಯ";"ನಗಾರಿ";16;1;4
"ಮಕರದ ಬಗ್ಗೆ ಮೂಡಿದ ಕನಿಕರ";"ಮರುಕ";18;1;4
"ಮನದಲ್ಲಿ ತೆನೆ ಮೂಡಿಸಿದ ವಂಶ";"ಮನೆತನ";20;1;4
"ವಿನಯವಾದ ಸಿಹಿ ಮೃದುವಾಗಿದೆ";"ಸವಿನಯ";21;1;4
"ತುರಗಕ್ಕೆ ವೇಗವಾಗಿ ಹೋಗುವ ಆತುರ";"ಕಾತುರ";2;2;4
"ಸರವಣನಲ್ಲಿ ತುಂಬಿದ ಶಬ್ದ";"ರವ";3;2;4
"ಪುಣ್ಯ ಮಾಡಿದ ಈತ ದೊಡ್ಡ ಮನುಷ್ಯ";"ಗಣ್ಯ";4;2;4
"ಗರಿ ಮೂಡಿಸಿಕೊಂಡ ಭಕ್ಷ";"ಗಜ್ಜರಿ";5;2;4
"ಇಪ್ಪತ್ತೇಳು ನಕ್ಷತ್ರಗಳಲ್ಲಿ ಕೊನೆಯದು ಈ ತಾರೆ";"ರೇವತಿ";7;2;4
"ಆಕಾಶದಲ್ಲಿ ಕೈÉಗೊಂಡ ಗಹನವಾದ ಯಾತ್ರೆ";"ಗಗನಯಾನ";9;2;4
"ಕುದುರೆಯ ಮುಖವನ್ನು ಹೊಂದಿದವನು ಹರೆಯದಲ್ಲಿ ಬಂದ";"ಹಯವದನ";10;2;4
"ಭೂಮಿ ಅದುರಿದಾಗ ಸಿಕ್ಕ ಖನಿಜ";"ಅದಿರು";13;2;4
"ಬದಲಾವಣೆಗೊಂಡ ತರಕಾರಿ";"ಬದನೆ";15;2;4
"ಗಾಯತ್ರಿಯನ್ನು ಒಲಿಸಿಕೊಳ್ಳಲು ಹಾಡಿದ ಹಾಡು";"ಗಾಯನ";17;2;4
"ಮದನ ಹೊಂದಿದ ಚಿತ್ತ";"ಮನ";18;2;4
"ರಸದ ಜೊತೆ ಬಂದ ನಿರುಪಯುಕ್ತ ವಸ್ತು";"ಕಸ";19;2;4