Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. # Run from the directory containing the app
  2. # Given the app name
  3. # Iterates over the models and replaces attr_accessible with strong params in the assocated controller
  4. require 'active_support/inflector'
  5. app_name = ARGV.first
  6.  
  7. models = Dir.entries("#{app_name}/app/models/").reject {|name| ['.', '..', '.gitkeep', 'permission.rb', 'user.rb'].include? name }.map {|name| name.split('.').first}
  8.  
  9. models.each do |model_name|
  10. model_file_name = "#{app_name}/app/models/#{model_name}.rb"
  11. controller_file_name = "#{app_name}/app/controllers/#{model_name.pluralize}_controller.rb"
  12. model_contents = File.read(model_file_name)
  13.  
  14. puts "updating model #{model_file_name}"
  15.  
  16. params = model_contents.split("\n").grep(/attr_accessible/)
  17. .map {|line| line.gsub(/attr_accessible/, '')}
  18.  
  19. new_model_contents = model_contents.gsub(/attr_accessible/, '# attr_accessible')
  20. File.open(model_file_name, "w") {|file| file.puts new_model_contents }
  21.  
  22. controller_contents = File.read(controller_file_name)
  23.  
  24. if controller_contents.include? "params[:#{model_name}]"
  25. params_method_name = "#{model_name}_params"
  26. new_controller_contents = controller_contents.gsub("params[:#{model_name}]", params_method_name)
  27. new_controller_contents = new_controller_contents.split("\n")
  28.  
  29. popped = ''
  30. while popped.strip != "end"
  31. popped = new_controller_contents.pop
  32. end
  33.  
  34. puts "adding params"
  35. new_controller_contents << "\n"
  36. new_controller_contents << " def #{model_name}_params"
  37. new_controller_contents << " params.require(:#{model_name}).permit("
  38. params.each_with_index do |param_line, index|
  39. last = (index + 1 == params.length)
  40. if last
  41. new_controller_contents << " " + param_line + ")"
  42. else
  43. new_controller_contents << " " + param_line + ","
  44. end
  45. end
  46. new_controller_contents << " end "
  47. new_controller_contents << "end "
  48.  
  49. puts "opening file"
  50. File.open(controller_file_name, "w") {|file| file.puts new_controller_contents.join("\n") }
  51. end
  52. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement