aboutsummaryrefslogblamecommitdiffstats
path: root/activerecord/test/models/contact.rb
blob: 6e02ff199bea45ccbc2ba8c9757831a20c02f8d7 (plain) (tree)
1
2
3
4
5
6
7
8
9

                             


                         
                                           
 
                                            
                                 
                          

       
                                      








                                       
 
                                                    

       
 
                                                                  

                                                                
     
   
 


                                  
 


                                     
 
                            
   
# frozen_string_literal: true

module ContactFakeColumns
  def self.extended(base)
    base.class_eval do
      establish_connection(adapter: "fake")

      connection.data_sources = [table_name]
      connection.primary_keys = {
        table_name => "id"
      }

      column :id,             :integer
      column :name,           :string
      column :age,            :integer
      column :avatar,         :binary
      column :created_at,     :datetime
      column :awesome,        :boolean
      column :preferences,    :string
      column :alternative_id, :integer

      serialize :preferences

      belongs_to :alternative, class_name: "Contact"
    end
  end

  # mock out self.columns so no pesky db is needed for these tests
  def column(name, sql_type = nil, options = {})
    connection.merge_column(table_name, name, sql_type, options)
  end
end

class Contact < ActiveRecord::Base
  extend ContactFakeColumns
end

class ContactSti < ActiveRecord::Base
  extend ContactFakeColumns
  column :type, :string

  def type; "ContactSti" end
end