title: How to create ActiveRecord tableless Model in Rails 5?
body: <p>I tried create new model which has auto type casting without table in database. I've tried to inherit from <code>ActiveRecord::Base</code> it's thrown exception <code>ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "people" does not exist</code></p>
  
  <p>Class implementation:</p>
  
  <pre><code>class Person &lt; ActiveRecord::Base
  
    def self.columns
      @columns ||= [];
    end
  
    def self.column(name, sql_type = nil, default = nil, null = true)
      @columns &lt;&lt; ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
    end
  
    columns
  
    column :from_email, :string
    column :to_email, :string
    column :article_id, :integer
    column :message, :text
  
    def initialize
    end
  
  end
  </code></pre>
  
  <p>stack trace:</p>
  
  <pre><code>ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "people" does not exist
  LINE 8:                WHERE a.attrelid = '"people"'::regclass
  ^
    :               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                           pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
                           (SELECT c.collname FROM pg_collation c, pg_type t
                           WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation &lt;&gt; t.typcollation),
                           col_description(a.attrelid, a.attnum) AS comment
  FROM pg_attribute a LEFT JOIN pg_attrdef d
  ON a.attrelid = d.adrelid AND a.attnum = d.adnum
  WHERE a.attrelid = '"people"'::regclass
  AND a.attnum &gt; 0 AND NOT a.attisdropped
  ORDER BY a.attnum
  
  from /activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `async_exec'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `block in query'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log'
  from /activesupport-5.0.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:87:in `query'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:739:in `column_definitions'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:227:in `columns'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/schema_cache.rb:56:in `columns'
  from /activerecord-5.0.1/lib/active_record/connection_adapters/schema_cache.rb:62:in `columns_hash'
  from /activerecord-5.0.1/lib/active_record/model_schema.rb:441:in `load_schema!'
  from /activerecord-5.0.1/lib/active_record/attributes.rb:233:in `load_schema!'
  from /activerecord-5.0.1/lib/active_record/attribute_decorators.rb:28:in `load_schema!'
  from /activerecord-5.0.1/lib/active_record/model_schema.rb:436:in `load_schema'
  from /activerecord-5.0.1/lib/active_record/model_schema.rb:349:in `attribute_types'
  from /activerecord-5.0.1/lib/active_record/attribute_methods.rb:179:in `has_attribute?'
  ... 3 levels...
  from /railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
  from /railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
  from /railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
  from /railties-5.0.1/lib/rails/commands.rb:18:in `&lt;top (required)&gt;'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `block in require'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require'
  from /project/rails/bin/rails:9:in `&lt;top (required)&gt;'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `block in load'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
  from /activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
  </code></pre>
  
  <p><strong>EDIT:</strong></p>
  
  <p>Neither</p>
  
  <pre><code>extend ActiveModel::Naming
  </code></pre>
  
  <p>nor </p>
  
  <pre><code>include ActiveModel::Model
  </code></pre>
  
  <p>cannot implement the implicit type conversion.</p>