Class: ActiveScaffold::Tableless

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/active_scaffold/tableless.rb

Overview

rubocop:disable Rails/ApplicationRecord

Defined Under Namespace

Modules: Association, CollectionAssociation, RelationExtension, SingularAssociation, Tableless, TablelessCollectionAssociation, TablelessSingularAssociation Classes: Column, Connection, Relation, StatementCache

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.column(name, sql_type = nil, options = {}) ⇒ Object



194
195
196
197
# File 'lib/active_scaffold/tableless.rb', line 194

def self.column(name, sql_type = nil, options = {})
  column = Column.new(name.to_s, options[:default], sql_type.to_s, options.key?(:null) ? options[:null] : true)
  column.tap { columns << column }
end

.columnsObject



177
178
179
# File 'lib/active_scaffold/tableless.rb', line 177

def self.columns
  @tableless_columns ||= [] # rubocop:disable Naming/MemoizedInstanceVariableName
end

.connectionObject



190
191
192
# File 'lib/active_scaffold/tableless.rb', line 190

def self.connection
  @connection ||= Connection.new(self)
end

.execute_simple_calculation(relation, operation, column_name, distinct) ⇒ Object



207
208
209
210
211
212
213
# File 'lib/active_scaffold/tableless.rb', line 207

def self.execute_simple_calculation(relation, operation, column_name, distinct)
  unless operation == 'count' && [relation.klass.primary_key, :all].include?(column_name)
    raise "self.execute_simple_calculation must be implemented in a Tableless model to support #{operation} #{column_name}#{' distinct' if distinct} columns"
  end

  find_all(relation).size
end

.find(*ids) ⇒ Object



151
152
153
# File 'lib/active_scaffold/tableless.rb', line 151

def find(*ids)
  ids.length == 1 ? all.find(*ids[0]) : super # rubocop:disable Rails/RedundantActiveRecordAllMethod
end

.find_all(relation) ⇒ Object



199
200
201
# File 'lib/active_scaffold/tableless.rb', line 199

def self.find_all(relation)
  raise 'self.find_all must be implemented in a Tableless model'
end

.find_one(id, relation) ⇒ Object



203
204
205
# File 'lib/active_scaffold/tableless.rb', line 203

def self.find_one(id, relation)
  raise 'self.find_one must be implemented in a Tableless model'
end

.table_exists?Boolean

Returns:

  • (Boolean)


185
186
187
# File 'lib/active_scaffold/tableless.rb', line 185

def self.table_exists?
  true
end

.table_nameObject



181
182
183
# File 'lib/active_scaffold/tableless.rb', line 181

def self.table_name
  @table_name ||= ActiveModel::Naming.plural(self)
end

Instance Method Details

#_create_recordObject

:nodoc:



219
220
221
# File 'lib/active_scaffold/tableless.rb', line 219

def _create_record # :nodoc:
  run_callbacks(:create) {} # run callbacks but do nothing
end

#_update_recordObject

:nodoc:



223
224
225
# File 'lib/active_scaffold/tableless.rb', line 223

def _update_record(*) # :nodoc:
  run_callbacks(:update) {} # run callbacks but do nothing
end

#destroyObject



215
216
217
# File 'lib/active_scaffold/tableless.rb', line 215

def destroy
  raise 'destroy must be implemented in a Tableless model'
end