diff --git a/app/models/effective/datatable.rb b/app/models/effective/datatable.rb
index <HASH>..<HASH> 100644
--- a/app/models/effective/datatable.rb
+++ b/app/models/effective/datatable.rb
@@ -71,7 +71,9 @@ module Effective
     end
 
     def table_columns
-      table_columns_with_defaults()
+      @table_columns ||= table_columns_with_defaults().select do |_, col|
+        col[:if] == nil || (col[:if].respond_to?(:call) ? instance_exec(&col[:if]) : col[:if])
+      end
     end
 
     def to_json(options = {})
diff --git a/lib/effective_datatables.rb b/lib/effective_datatables.rb
index <HASH>..<HASH> 100644
--- a/lib/effective_datatables.rb
+++ b/lib/effective_datatables.rb
@@ -9,7 +9,7 @@ module EffectiveDatatables
   end
 
   def self.authorized?(controller, action, resource)
-    if authorization_method.kind_of?(Symbol) || authorization_method.respond_to?(:call)
+    if authorization_method.respond_to?(:call) || authorization_method.kind_of?(Symbol)
       raise Effective::AccessDenied.new() unless (controller || self).instance_exec(controller, action, resource, &authorization_method)
     end
     true
Added table_column :if => functionality