module AppBase::ModelConcern::ClassMethods

Public Instance Methods

allow_create(criteria=:mine, &block) click to toggle source
# File lib/appbase/model_concern.rb, line 145
def allow_create(criteria=:mine, &block)
  appbase_helper.crud_allow(:create, criteria, &block)
end
allow_delete(criteria=:mine, &block) click to toggle source
# File lib/appbase/model_concern.rb, line 153
def allow_delete(criteria=:mine, &block)
  appbase_helper.crud_allow(:delete, criteria, &block)
end
allow_query(criteria=:mine, &block) click to toggle source
# File lib/appbase/model_concern.rb, line 157
def allow_query(criteria=:mine, &block)
  appbase_helper.crud_allow(:query, criteria, &block)
end
allow_update(criteria=:mine, &block) click to toggle source
# File lib/appbase/model_concern.rb, line 149
def allow_update(criteria=:mine, &block)
  appbase_helper.crud_allow(:update, criteria, &block)
end
appbase_queryable_operators() click to toggle source
# File lib/appbase/model_concern.rb, line 183
def appbase_queryable_operators
  return {}
end
expose_to_appbase(*method_names) click to toggle source
# File lib/appbase/model_concern.rb, line 134
def expose_to_appbase(*method_names)
  return if method_names.count == 0
  options = {}
  if method_names.last.instance_of? Hash
    *method_names, options = method_names
  end
  method_names.each do |method_name|
    AppBase::Registry.register_rpc self, method_name, options
  end
end
restrict_query_columns(options={}) click to toggle source
# File lib/appbase/model_concern.rb, line 161
def restrict_query_columns(options={})
  raise InvalidUsage if !options || !options.instance_of?(Hash)
  columns = self.columns.map{|c|c.name.to_sym}
  
  columns = appbase_helper.symbol_array_manipulate :only, columns, options
  columns = appbase_helper.symbol_array_manipulate :except, columns, options
  
  self.define_singleton_method :appbase_queryable_columns do
    columns
  end
  
rescue InvalidUsage
  raise %-
    restrict_query_columns usage:
      restrict_query_columns <only | except>: <single_column | column_list>
    examples:
      restrict_query_columns only: [:user_id, :created_at, :updated_at]
      restrict_query_columns only: :updated_at
      restrict_query_columns except: [:content]
  -
end
restrict_query_operators(*columns) click to toggle source
# File lib/appbase/model_concern.rb, line 187
def restrict_query_operators(*columns)
  check_before_restrict_query_operators columns
  *columns, options = columns
  operators = appbase_queryable_operators
  
  set = [:equal, :compare, :in]
  set = appbase_helper.symbol_array_manipulate :only, set, options
  set = appbase_helper.symbol_array_manipulate :except, set, options
  
  columns.each do |c|
    operators[c.to_sym] = set
  end
  
  self.define_singleton_method :appbase_queryable_operators do
    operators
  end
rescue InvalidUsage
  raise %-
    restrict_query_operators usage:
      restrict_query_operators :column1, :column2, <only | except>: <:equal | :compare | :in>
    examples:
      restrict_query_operators :user_id, :created_at, :updated_at, only: [:equal, :compare]
      restrict_query_operators :user_id, :created_at, :updated_at, except: :in
      restrict_query_operators :title, only: :equal
  -
end

Private Instance Methods

appbase_helper() click to toggle source
# File lib/appbase/model_concern.rb, line 222
def appbase_helper
  ModelConcernHelper[self]
end
check_before_restrict_query_operators(columns) click to toggle source
# File lib/appbase/model_concern.rb, line 216
def check_before_restrict_query_operators(columns)
  raise InvalidUsage if columns.count < 2 || !columns.last.instance_of?(Hash)
  options = columns.last
  raise InvalidUsage unless options.has_key?(:only) || options.has_key?(:except)
end