Skip to content

on the fly by association - not working for a particular column #167

Open
@bhargav-prahladarao

Description

@bhargav-prahladarao

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions