Module: AppBase::ModelConcern::ClassMethods

Defined in:
lib/appbase/model_concern.rb

Instance Method Summary collapse

Instance Method Details

#allow_create(criteria = :mine, &block) ⇒ Object



145
146
147
# 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) ⇒ Object



153
154
155
# 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) ⇒ Object



157
158
159
# 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) ⇒ Object



149
150
151
# File 'lib/appbase/model_concern.rb', line 149

def allow_update(criteria=:mine, &block)
  appbase_helper.crud_allow(:update, criteria, &block)
end

#appbase_queryable_operatorsObject



183
184
185
# File 'lib/appbase/model_concern.rb', line 183

def appbase_queryable_operators
  return {}
end

#expose_to_appbase(*method_names) ⇒ Object



134
135
136
137
138
139
140
141
142
143
# 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 = {}) ⇒ Object



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# 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) ⇒ Object



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# 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