def declare_column(
                 column_name: nil,
                 model: nil,
                 custom_filter_active: nil,
                 table_alias: nil,
                 filter_type: nil,
                 assocs: [])  #:nodoc:


      @options[:include] = Wice.build_includes(@options[:include], assocs)

      if model # this is an included table
        column = @table_column_matrix.get_column_by_model_class_and_column_name(model, column_name)
        raise WiceGridArgumentError.new("Column '#{column_name}' is not found in table '#{model.table_name}'!") if column.nil?
        main_table = false
        table_name = model.table_name
      else
        column = @table_column_matrix.get_column_in_default_model_class_by_column_name(column_name)
        if column.nil?
          raise WiceGridArgumentError.new("Column '#{column_name}' is not found in table '#{@klass.table_name}'! " \
            "If '#{column_name}' belongs to another table you should declare it in :include or :join when initialising " \
            'the grid, and specify :model in column declaration.')
        end
        main_table = true
        table_name = @table_column_matrix.default_model_class.table_name
      end

      if column
        conditions_generator = ActiveRecordColumnWrapper.new(column, @status[:f], main_table, table_alias, custom_filter_active, filter_type)
        conditions, current_parameter_name = conditions_generator.wg_initialize_request_parameters

        if @status[:f] && conditions.blank?
          @status[:f].delete(current_parameter_name)
        end

        @table_column_matrix.add_condition(column, conditions)

        # [ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::Column, String, Boolean]
        [column, table_name, main_table]
      end
    end
def declare_column(
                 column_name: nil,
                 model: nil,
                 custom_filter_active: nil,
                 table_alias: nil,
                 filter_type: nil,
                 assocs: [])  #:nodoc:


      @options[:include] = Wice.build_includes(@options[:include], assocs)

      if model # this is an included table
        column = @table_column_matrix.get_column_by_model_class_and_column_name(model, column_name)
        raise WiceGridArgumentError.new("Column '#{column_name}' is not found in table '#{model.table_name}'!") if column.nil?
        main_table = false
        table_name = model.table_name
      else
        column = @table_column_matrix.get_column_in_default_model_class_by_column_name(column_name)
        if column.nil?
          raise WiceGridArgumentError.new("Column '#{column_name}' is not found in table '#{@klass.table_name}'! " \
            "If '#{column_name}' belongs to another table you should declare it in :include or :join when initialising " \
            'the grid, and specify :model in column declaration.')
        end
        main_table = true
        table_name = @table_column_matrix.default_model_class.table_name
      end

      if column
        conditions_generator = ActiveRecordColumnWrapper.new(column, @status[:f], main_table, table_alias, custom_filter_active, filter_type)
        conditions, current_parameter_name = conditions_generator.wg_initialize_request_parameters

        if @status[:f] && conditions.blank?
          @status[:f].delete(current_parameter_name)
        end

        @table_column_matrix.add_condition(column, conditions)

        # [ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::Column, String, Boolean]
        [column, table_name, main_table]
      end
    end
declare_column(String, ActiveRecord, CustomFilterSpec, nil | string, nil | Boolean)