ruby on rails - Update huge data in rake task -


i have model named pagedensity has 5m rows.

when created project pagedensity table stored float of 5 decimal precision in density coulmn.

now requirement changed round 2 decimal places.

i wrote task round densities makes system heavy stucks. can't use query rounding bit change 0.57500 rounded 0.57 , 0.57600 rounded 0.58.

what have tried far simply:

  task round_densities: :environment     application_object = applicationcontroller.new     time = benchmark.realtime       activerecord::base.transaction         pagedensity.all.each {|p| p.update_attributes(density: application_object.round_number(p.density))}       end     end     puts '***************************************'     puts "total time consumed #{time} seconds"     puts '***************************************'   end 

and tried make query rounding failed:

select round(0.00500, 2) #this returns 0.01 should return 0.00 

i using postgres idea make psql query or using rails ?

it sounds rounding requirement 0.001 off normal rounding be.

in case think can run sql update:

update page_densities set density = round(density - 0.001, 2) 

this round this:

0.011 => round(0.010, 2) => 0.01 0.015 => round(0.014, 2) => 0.01 0.016 => round(0.015, 2) => 0.02 0.02  => round(0.019, 2) => 0.02 

Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -