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
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