Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 1st, 2012  |  syntax: None  |  size: 0.79 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # TODO: this will fail when run on a project that uses namespaced models
  2. desc "Show visibility of attributes"
  3. task :attr => :environment do
  4.   require 'set'
  5.  
  6.   models = Dir['**/models/**/*.rb'].map {|f| File.basename(f, '.*').camelize.constantize }
  7.   models.each do |m|
  8.     all = Set.new m.attribute_names
  9.     accessible = Set.new m.accessible_attributes.to_a
  10.     protected_ = Set.new m.protected_attributes.to_a
  11.  
  12.     if accessible.empty?
  13.       is_accessible = (all - protected_).to_a
  14.     else
  15.       is_accessible = (accessible - protected_).to_a
  16.     end
  17.     non_accessible = ((all - is_accessible) + protected_).to_a
  18.     is_accessible = "None" if is_accessible.empty?
  19.  
  20.     print m.name, "\n"
  21.     print "  Accessible: ", is_accessible, "\n"
  22.     print "  Nonaccessible: " , non_accessible , "\n\n"
  23.   end
  24. end