module Fakey::Table

Public Class Methods

included(base) click to toggle source
# File lib/fakey/schema_definitions.rb, line 49
def self.included(base)
  base.class_eval do
    alias_method_chain :references, :foreign_keys
    alias_method_chain :belongs_to, :foreign_keys
  end
end

Public Instance Methods

belongs_to_with_foreign_keys(*args)
references_with_foreign_keys(*args) click to toggle source
# File lib/fakey/schema_definitions.rb, line 56
def references_with_foreign_keys(*args)
  options = args.extract_options!
  polymorphic = options.delete(:polymorphic)
  args.each do |col|
    column_name =  options[:column] || "#{col}_id"
    column_database_type = options[:type] || :integer
    if polymorphic
      @base.add_column(@table_name, column_name, column_database_type, options)
      @base.add_column(@table_name, "#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options)
    else
      options[:references] ||= col.to_s.pluralize
      @base.add_column_with_foreign_key(@table_name, column_name, column_database_type, options)
    end
  end
end
Also aliased as: belongs_to_with_foreign_keys