def scaffolded_grid(grid_obj, opts = {}) #:nodoc:
      unless grid_obj.is_a? WiceGrid
        raise WiceGridArgumentError.new('scaffolded_grid: the parameter must be a WiceGrid instance.')
      end

      # debug grid.klass.column_names
      columns = grid_obj.klass.column_names
      if opts[:reject_attributes].is_a? Proc
        columns = columns.reject { |c| opts[:reject_attributes].call(c) }
        opts.delete(:reject_attributes)
      else
        columns = columns.reject { |c| c =~ opts[:reject_attributes] }
        opts.delete(:reject_attributes)
      end
      grid(grid_obj, opts) do |g|
        columns.each do |column_name|
          g.column name: column_name.humanize, attribute: column_name  do |ar|
            ar.send(column_name)
          end
        end
      end
    end
def scaffolded_grid(grid_obj, opts = {}) #:nodoc:
      unless grid_obj.is_a? WiceGrid
        raise WiceGridArgumentError.new('scaffolded_grid: the parameter must be a WiceGrid instance.')
      end

      # debug grid.klass.column_names
      columns = grid_obj.klass.column_names
      if opts[:reject_attributes].is_a? Proc
        columns = columns.reject { |c| opts[:reject_attributes].call(c) }
        opts.delete(:reject_attributes)
      else
        columns = columns.reject { |c| c =~ opts[:reject_attributes] }
        opts.delete(:reject_attributes)
      end
      grid(grid_obj, opts) do |g|
        columns.each do |column_name|
          g.column name: column_name.humanize, attribute: column_name  do |ar|
            ar.send(column_name)
          end
        end
      end
    end
secret but stupid weapon - takes an ActiveRecord and using reflection tries to build all the column clauses by itself.
 WiceGrid is not a scaffolding solution, I hate scaffolding and how certain idiots associate scaffolding with Rails,
 so I do not document this method to avoid contributing to this misunderstanding.