module Fakey::TableDefinition

Public Class Methods

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

Public Instance Methods

add_foreign_key(column_name,table_name,options) click to toggle source
# File lib/fakey/schema_definitions.rb, line 28
def add_foreign_key(column_name,table_name,options)
  @foreign_keys ||= []
  @foreign_keys << {:column_name => column_name, :to_table => table_name, :options => options}
end
belongs_to_with_foreign_keys(*args)
foreign_key(*args) click to toggle source
# File lib/fakey/schema_definitions.rb, line 41
def foreign_key(*args)
  return unless Array === args.first
  composite_foreign_key, options = args.first, args.last
  
end
references_with_foreign_keys(*args) click to toggle source
# File lib/fakey/schema_definitions.rb, line 11
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
    column(column_name, column_database_type, options)
    if polymorphic
      column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options)
    else
      table_name = options[:references] || col.to_s.pluralize
      add_foreign_key(column_name, table_name, options)
    end
  end
end
Also aliased as: belongs_to_with_foreign_keys
to_sql_with_foreign_keys() click to toggle source
# File lib/fakey/schema_definitions.rb, line 33
def to_sql_with_foreign_keys
  sql = to_sql_without_foreign_keys
  if @foreign_keys
    sql << ',' <<  @foreign_keys.map{|fk| @base.add_foreign_key(fk[:to_table],fk[:column_name],fk[:options])}.join(",")
  end
  sql
end