Permalink
Browse files

spread out some code. Make table_definitions test work

  • Loading branch information...
1 parent de94e96 commit 78084a6e84a13e2f14af8c790c8f51c832b002d2 @matthuhiggins committed Dec 3, 2012
View
@@ -13,6 +13,8 @@ module ConnectionAdapters
autoload :ForeignKeyDefinition
autoload :SchemaDefinitions
autoload :SchemaStatements
+ autoload :Table
+ autoload :TableDefinition
end
end
@@ -11,71 +11,5 @@ def self.included(base)
end
end
end
-
- module TableDefinition
- def foreign_key(to_table, options = {})
- foreign_keys[to_table] = options
- end
-
- def foreign_keys
- @foreign_keys ||= {}
- end
- end
-
- module Table
- extend ActiveSupport::Concern
-
- included do
- alias_method_chain :references, :foreign_keys
- end
-
- # Adds a new foreign key to the table. +to_table+ can be a single Symbol, or
- # an Array of Symbols. See SchemaStatements#add_foreign_key
- #
- # ===== Examples
- # ====== Creating a simple foreign key
- # t.foreign_key(:people)
- # ====== Defining the column
- # t.foreign_key(:people, column: :sender_id)
- # ====== Creating a named foreign key
- # t.foreign_key(:people, column: :sender_id, name: 'sender_foreign_key')
- # ====== Defining the column of the +to_table+.
- # t.foreign_key(:people, column: :sender_id, primary_key: :person_id)
- def foreign_key(to_table, options = {})
- @base.add_foreign_key(@table_name, to_table, options)
- end
-
- # Remove the given foreign key from the table.
- #
- # ===== Examples
- # ====== Remove the suppliers_company_id_fk in the suppliers table.
- # change_table :suppliers do |t|
- # t.remove_foreign_key :companies
- # end
- # ====== Remove the foreign key named accounts_branch_id_fk in the accounts table.
- # change_table :accounts do |t|
- # t.remove_foreign_key column: :branch_id
- # end
- # ====== Remove the foreign key named party_foreign_key in the accounts table.
- # change_table :accounts do |t|
- # t.remove_index name: :party_foreign_key
- # end
- def remove_foreign_key(options)
- @base.remove_foreign_key(@table_name, options)
- end
-
- # Deprecated
- def references_with_foreign_keys(*args)
- options = args.extract_options!
-
- if fk_options = options.delete(:foreign_key)
- p ActiveSupport::Deprecation.send(:deprecation_message, caller,
- ":foreign_key in t.references is deprecated. " \
- "Use t.foreign_key instead")
- end
-
- references_without_foreign_keys(*(args.dup << options))
- end
- end
end
end
@@ -0,0 +1,59 @@
+module Foreigner
+ module ConnectionAdapters
+ module Table
+ extend ActiveSupport::Concern
+
+ included do
+ alias_method_chain :references, :foreign_keys
+ end
+
+ # Adds a new foreign key to the table. +to_table+ can be a single Symbol, or
+ # an Array of Symbols. See SchemaStatements#add_foreign_key
+ #
+ # ===== Examples
+ # ====== Creating a simple foreign key
+ # t.foreign_key(:people)
+ # ====== Defining the column
+ # t.foreign_key(:people, column: :sender_id)
+ # ====== Creating a named foreign key
+ # t.foreign_key(:people, column: :sender_id, name: 'sender_foreign_key')
+ # ====== Defining the column of the +to_table+.
+ # t.foreign_key(:people, column: :sender_id, primary_key: :person_id)
+ def foreign_key(to_table, options = {})
+ @base.add_foreign_key(@table_name, to_table, options)
+ end
+
+ # Remove the given foreign key from the table.
+ #
+ # ===== Examples
+ # ====== Remove the suppliers_company_id_fk in the suppliers table.
+ # change_table :suppliers do |t|
+ # t.remove_foreign_key :companies
+ # end
+ # ====== Remove the foreign key named accounts_branch_id_fk in the accounts table.
+ # change_table :accounts do |t|
+ # t.remove_foreign_key column: :branch_id
+ # end
+ # ====== Remove the foreign key named party_foreign_key in the accounts table.
+ # change_table :accounts do |t|
+ # t.remove_index name: :party_foreign_key
+ # end
+ def remove_foreign_key(options)
+ @base.remove_foreign_key(@table_name, options)
+ end
+
+ # Deprecated
+ def references_with_foreign_keys(*args)
+ options = args.extract_options!
+
+ if fk_options = options.delete(:foreign_key)
+ p ActiveSupport::Deprecation.send(:deprecation_message, caller,
+ ":foreign_key in t.references is deprecated. " \
+ "Use t.foreign_key instead")
+ end
+
+ references_without_foreign_keys(*(args.dup << options))
+ end
+ end
+ end
+end
@@ -0,0 +1,13 @@
+module Foreigner
+ module ConnectionAdapters
+ module TableDefinition
+ def foreign_key(to_table, options = {})
+ foreign_keys[to_table] = options
+ end
+
+ def foreign_keys
+ @foreign_keys ||= {}
+ end
+ end
+ end
+end
@@ -0,0 +1,13 @@
+require 'helper'
+
+class Foreigner::ConnectionAdapters::TableDefinitionsTest < ActiveSupport::TestCase
+ class TestDefinition
+ include Foreigner::ConnectionAdapters::TableDefinition
+ end
+
+ test "foreign_key" do
+ definition = TestDefinition.new
+ definition.foreign_key :poops, and: :one;
+ assert_equal definition.foreign_keys[:poops], and: :one
+ end
+end

0 comments on commit 78084a6

Please sign in to comment.