foreigner 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,63 +14,60 @@ module Foreigner
14
14
  module Table
15
15
  def self.included(base)
16
16
  base.class_eval do
17
- include InstanceMethods
18
17
  alias_method_chain :references, :foreign_keys
19
18
  end
20
19
  end
21
20
 
22
- module InstanceMethods
23
- # Adds a new foreign key to the table. +to_table+ can be a single Symbol, or
24
- # an Array of Symbols. See SchemaStatements#add_foreign_key
25
- #
26
- # ===== Examples
27
- # ====== Creating a simple foreign key
28
- # t.foreign_key(:people)
29
- # ====== Defining the column
30
- # t.foreign_key(:people, :column => :sender_id)
31
- # ====== Creating a named foreign key
32
- # t.foreign_key(:people, :column => :sender_id, :name => 'sender_foreign_key')
33
- # ====== Defining the column of the +to_table+.
34
- # t.foreign_key(:people, :column => :sender_id, :primary_key => :person_id)
35
- def foreign_key(to_table, options = {})
36
- @base.add_foreign_key(@table_name, to_table, options)
37
- end
21
+ # Adds a new foreign key to the table. +to_table+ can be a single Symbol, or
22
+ # an Array of Symbols. See SchemaStatements#add_foreign_key
23
+ #
24
+ # ===== Examples
25
+ # ====== Creating a simple foreign key
26
+ # t.foreign_key(:people)
27
+ # ====== Defining the column
28
+ # t.foreign_key(:people, :column => :sender_id)
29
+ # ====== Creating a named foreign key
30
+ # t.foreign_key(:people, :column => :sender_id, :name => 'sender_foreign_key')
31
+ # ====== Defining the column of the +to_table+.
32
+ # t.foreign_key(:people, :column => :sender_id, :primary_key => :person_id)
33
+ def foreign_key(to_table, options = {})
34
+ @base.add_foreign_key(@table_name, to_table, options)
35
+ end
36
+
37
+ # Remove the given foreign key from the table.
38
+ #
39
+ # ===== Examples
40
+ # ====== Remove the suppliers_company_id_fk in the suppliers table.
41
+ # t.remove_foreign_key :companies
42
+ # ====== Remove the foreign key named accounts_branch_id_fk in the accounts table.
43
+ # remove_foreign_key :column => :branch_id
44
+ # ====== Remove the foreign key named party_foreign_key in the accounts table.
45
+ # remove_index :name => :party_foreign_key
46
+ def remove_foreign_key(options = {})
47
+ @base.remove_foreign_key(@table_name, options)
48
+ end
38
49
 
39
- # Remove the given foreign key from the table.
40
- #
41
- # ===== Examples
42
- # ====== Remove the suppliers_company_id_fk in the suppliers table.
43
- # t.remove_foreign_key :companies
44
- # ====== Remove the foreign key named accounts_branch_id_fk in the accounts table.
45
- # remove_foreign_key :column => :branch_id
46
- # ====== Remove the foreign key named party_foreign_key in the accounts table.
47
- # remove_index :name => :party_foreign_key
48
- def remove_foreign_key(options = {})
49
- @base.remove_foreign_key(@table_name, options)
50
- end
51
-
52
- # Adds a :foreign_key option to Table.references.
53
- # If :foreign_key is true, a foreign key constraint is added to the table.
54
- # You can also specify a hash, which is passed as foreign key options.
55
- #
56
- # ===== Examples
57
- # ====== Add goat_id column and a foreign key to the goats table.
58
- # t.references(:goat, :foreign_key => true)
59
- # ====== Add goat_id column and a cascading foreign key to the goats table.
60
- # t.references(:goat, :foreign_key => {:dependent => :delete})
61
- #
62
- # Note: No foreign key is created if :polymorphic => true is used.
63
- def references_with_foreign_keys(*args)
64
- options = args.extract_options!
65
- polymorphic = options[:polymorphic]
66
- fk_options = options.delete(:foreign_key)
50
+ # Adds a :foreign_key option to Table.references.
51
+ # If :foreign_key is true, a foreign key constraint is added to the table.
52
+ # You can also specify a hash, which is passed as foreign key options.
53
+ #
54
+ # ===== Examples
55
+ # ====== Add goat_id column and a foreign key to the goats table.
56
+ # t.references(:goat, :foreign_key => true)
57
+ # ====== Add goat_id column and a cascading foreign key to the goats table.
58
+ # t.references(:goat, :foreign_key => {:dependent => :delete})
59
+ #
60
+ # Note: No foreign key is created if :polymorphic => true is used.
61
+ def references_with_foreign_keys(*args)
62
+ options = args.extract_options!
63
+ polymorphic = options[:polymorphic]
64
+ fk_options = options.delete(:foreign_key)
67
65
 
68
- references_without_foreign_keys(*(args.dup << options))
66
+ references_without_foreign_keys(*(args.dup << options))
69
67
 
70
- if fk_options && !polymorphic
71
- fk_options = {} if fk_options == true
72
- args.each { |to_table| foreign_key(to_table, fk_options) }
73
- end
68
+ if fk_options && !polymorphic
69
+ fk_options = {} if fk_options == true
70
+ args.each { |to_table| foreign_key(to_table, fk_options) }
74
71
  end
75
72
  end
76
73
  end
@@ -30,6 +30,7 @@ module Foreigner
30
30
  WHERE tc.constraint_type = 'FOREIGN KEY'
31
31
  AND tc.constraint_catalog = '#{@config[:database]}'
32
32
  AND tc.table_name = '#{table_name}'
33
+ AND tc.table_schema = ANY (current_schemas(false))
33
34
  }
34
35
 
35
36
  fk_info.map do |row|
@@ -2,44 +2,41 @@ module Foreigner
2
2
  module SchemaDumper
3
3
  def self.included(base)
4
4
  base.class_eval do
5
- include InstanceMethods
6
5
  alias_method_chain :tables, :foreign_keys
7
6
  end
8
7
  end
9
8
 
10
- module InstanceMethods
11
- def tables_with_foreign_keys(stream)
12
- tables_without_foreign_keys(stream)
13
- @connection.tables.sort.each do |table|
14
- foreign_keys(table, stream)
15
- end
9
+ def tables_with_foreign_keys(stream)
10
+ tables_without_foreign_keys(stream)
11
+ @connection.tables.sort.each do |table|
12
+ foreign_keys(table, stream)
16
13
  end
17
-
18
- private
19
- def foreign_keys(table_name, stream)
20
- if (foreign_keys = @connection.foreign_keys(table_name)).any?
21
- add_foreign_key_statements = foreign_keys.map do |foreign_key|
22
- statement_parts = [ ('add_foreign_key ' + foreign_key.from_table.inspect) ]
23
- statement_parts << foreign_key.to_table.inspect
24
- statement_parts << (':name => ' + foreign_key.options[:name].inspect)
25
-
26
- if foreign_key.options[:column] != "#{foreign_key.to_table.singularize}_id"
27
- statement_parts << (':column => ' + foreign_key.options[:column].inspect)
28
- end
29
- if foreign_key.options[:primary_key] != 'id'
30
- statement_parts << (':primary_key => ' + foreign_key.options[:primary_key].inspect)
31
- end
32
- if foreign_key.options[:dependent].present?
33
- statement_parts << (':dependent => ' + foreign_key.options[:dependent].inspect)
34
- end
35
-
36
- ' ' + statement_parts.join(', ')
14
+ end
15
+
16
+ private
17
+ def foreign_keys(table_name, stream)
18
+ if (foreign_keys = @connection.foreign_keys(table_name)).any?
19
+ add_foreign_key_statements = foreign_keys.map do |foreign_key|
20
+ statement_parts = [ ('add_foreign_key ' + foreign_key.from_table.inspect) ]
21
+ statement_parts << foreign_key.to_table.inspect
22
+ statement_parts << (':name => ' + foreign_key.options[:name].inspect)
23
+
24
+ if foreign_key.options[:column] != "#{foreign_key.to_table.singularize}_id"
25
+ statement_parts << (':column => ' + foreign_key.options[:column].inspect)
26
+ end
27
+ if foreign_key.options[:primary_key] != 'id'
28
+ statement_parts << (':primary_key => ' + foreign_key.options[:primary_key].inspect)
29
+ end
30
+ if foreign_key.options[:dependent].present?
31
+ statement_parts << (':dependent => ' + foreign_key.options[:dependent].inspect)
37
32
  end
38
33
 
39
- stream.puts add_foreign_key_statements.sort.join("\n")
40
- stream.puts
34
+ ' ' + statement_parts.join(', ')
41
35
  end
36
+
37
+ stream.puts add_foreign_key_statements.sort.join("\n")
38
+ stream.puts
42
39
  end
43
- end
40
+ end
44
41
  end
45
42
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreigner
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 9
8
- - 1
9
- version: 0.9.1
4
+ prerelease:
5
+ version: 0.9.2
10
6
  platform: ruby
11
7
  authors:
12
8
  - Matthew Higgins
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2010-10-23 00:00:00 -07:00
13
+ date: 2011-04-12 00:00:00 -07:00
18
14
  default_executable:
19
15
  dependencies: []
20
16
 
@@ -53,25 +49,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
53
49
  requirements:
54
50
  - - ">="
55
51
  - !ruby/object:Gem::Version
56
- segments:
57
- - 1
58
- - 8
59
- - 6
60
52
  version: 1.8.6
61
53
  required_rubygems_version: !ruby/object:Gem::Requirement
62
54
  none: false
63
55
  requirements:
64
56
  - - ">="
65
57
  - !ruby/object:Gem::Version
66
- segments:
67
- - 1
68
- - 3
69
- - 5
70
58
  version: 1.3.5
71
59
  requirements: []
72
60
 
73
61
  rubyforge_project: foreigner
74
- rubygems_version: 1.3.7
62
+ rubygems_version: 1.6.1
75
63
  signing_key:
76
64
  specification_version: 3
77
65
  summary: Foreign keys for Rails