rare_map 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,13 +31,18 @@ module RareMap
31
31
  models.each do |model|
32
32
  group_models = models.select { |m| m.group == model.group && m.default_id == model.default_id }
33
33
 
34
- model.table.columns.each do |col|
35
- group_models.each do |gm|
34
+ group_models.each do |gm|
35
+ model.table.columns.each do |col|
36
36
  if gm.table.match_foreign_key(col) && model != gm
37
37
  model.relations << Relation.new(:belongs_to, col.name, gm.table.name)
38
38
  gm.relations << Relation.new(col.unique? ? :has_one : :has_many, col.name, model.table.name)
39
39
  end
40
40
  end
41
+
42
+ if gm.table.match_foreign_key_by_primary_key(model.table.primary_key) && model != gm
43
+ model.relations << Relation.new(:belongs_to, model.table.primary_key, gm.table.name)
44
+ gm.relations << Relation.new(:has_one, model.table.primary_key, model.table.name)
45
+ end
41
46
  end
42
47
  end
43
48
 
@@ -63,15 +63,20 @@ module RareMap
63
63
  end
64
64
 
65
65
  def match_foreign_key(column)
66
- if column.references == @name || ["#{@name}_#{fk_suffix}",
67
- "#{@name}#{fk_suffix}",
68
- "#{singularize}_#{fk_suffix}",
69
- "#{singularize}#{fk_suffix}",
70
- "#{pluralize}_#{fk_suffix}",
71
- "#{pluralize}#{fk_suffix}"].include?(column.name)
66
+ if column.references == @name || foreign_keys.include?(column.name)
72
67
  @name if primary_key
73
68
  end
74
69
  end
70
+
71
+ def match_foreign_key_by_primary_key(pk)
72
+ @name if foreign_keys.include?(pk) && primary_key
73
+ end
74
+
75
+ private
76
+ def foreign_keys
77
+ ["#{@name}_#{fk_suffix}", "#{@name}#{fk_suffix}", "#{singularize}_#{fk_suffix}",
78
+ "#{singularize}#{fk_suffix}", "#{pluralize}_#{fk_suffix}", "#{pluralize}#{fk_suffix}"]
79
+ end
75
80
  end
76
81
 
77
82
  class Column
@@ -1,8 +1,8 @@
1
1
  class RareMap
2
2
  module Version
3
3
  MAJOR = 1
4
- MINOR = 0
5
- PATCH = 2
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rare_map
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-17 00:00:00.000000000 Z
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -142,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
142
  version: '0'
143
143
  segments:
144
144
  - 0
145
- hash: 1396508381234435921
145
+ hash: 4278626048823483051
146
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  none: false
148
148
  requirements: