sql_enum 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76781aadbc073e6d58e5366276ed05ab1a65a95d
4
- data.tar.gz: 4d4f79bb985e42bb01905f564702be489a8b2149
3
+ metadata.gz: e0391b2647bafa76738ca6e50034303599631547
4
+ data.tar.gz: 9486b8ef30b7f6c6d10e0519ed5ee5bc0a363e3c
5
5
  SHA512:
6
- metadata.gz: eed5cce9bc7c9e89422d1c100b9d72b72e2568b077ecc24fcf2f0fd24c088f7f6b54abe630e4f7bd5f07996e4043234be5ee8d8cafd0839bbeb7164eda8f628d
7
- data.tar.gz: c5626fcb86a7f85764a89d8102fa122db773ff70b4929867aec9e47f96fa08407daea6bd4a908abdefc5f65e461749e806e71364855e2b18760f6fd467b149ec
6
+ metadata.gz: 6e7191b04a08c7baa32dbf5810549548375a16fa9bb0bd3a0aeba4ddff5a1c14e21e407420112eea5d800c98b8a04e232a098b97bf770c891580feb6846be43d
7
+ data.tar.gz: aadfd52951701ac331b88d24c6a9acae220cb19916a3670c5db9cdf336013c1e2979098d39f58fe42c08966cc016eee690f82f5532cbddca731a0e6b1295b04b
@@ -0,0 +1,79 @@
1
+ require 'active_record/fixtures'
2
+
3
+ module ActiveRecord
4
+ class FixtureSet
5
+ def table_rows
6
+ now = config.default_timezone == :utc ? Time.now.utc : Time.now
7
+
8
+ # allow a standard key to be used for doing defaults in YAML
9
+ fixtures.delete('DEFAULTS')
10
+
11
+ # track any join tables we need to insert later
12
+ rows = Hash.new { |h,table| h[table] = [] }
13
+
14
+ rows[table_name] = fixtures.map do |label, fixture|
15
+ row = fixture.to_hash
16
+
17
+ if model_class
18
+ # fill in timestamp columns if they aren't specified and the model is set to record_timestamps
19
+ if model_class.record_timestamps
20
+ timestamp_column_names.each do |c_name|
21
+ row[c_name] = now unless row.key?(c_name)
22
+ end
23
+ end
24
+
25
+ # interpolate the fixture label
26
+ row.each do |key, value|
27
+ row[key] = value.gsub("$LABEL", label.to_s) if value.is_a?(String)
28
+ end
29
+
30
+ # generate a primary key if necessary
31
+ if has_primary_key_column? && !row.include?(primary_key_name)
32
+ row[primary_key_name] = ActiveRecord::FixtureSet.identify(label, primary_key_type)
33
+ end
34
+
35
+ # Resolve enums
36
+ # model_class.defined_enums.each do |name, values|
37
+ # if row.include?(name)
38
+ # row[name] = values.fetch(row[name], row[name])
39
+ # end
40
+ # end
41
+
42
+ # If STI is used, find the correct subclass for association reflection
43
+ reflection_class =
44
+ if row.include?(inheritance_column_name)
45
+ row[inheritance_column_name].constantize rescue model_class
46
+ else
47
+ model_class
48
+ end
49
+
50
+ reflection_class._reflections.each_value do |association|
51
+ case association.macro
52
+ when :belongs_to
53
+ # Do not replace association name with association foreign key if they are named the same
54
+ fk_name = (association.options[:foreign_key] || "#{association.name}_id").to_s
55
+
56
+ if association.name.to_s != fk_name && value = row.delete(association.name.to_s)
57
+ if association.polymorphic? && value.sub!(/\s*\(([^\)]*)\)\s*$/, "")
58
+ # support polymorphic belongs_to as "label (Type)"
59
+ row[association.foreign_type] = $1
60
+ end
61
+
62
+ fk_type = reflection_class.type_for_attribute(fk_name).type
63
+ row[fk_name] = ActiveRecord::FixtureSet.identify(value, fk_type)
64
+ end
65
+ when :has_many
66
+ if association.options[:through]
67
+ add_join_records(rows, row, HasManyThroughProxy.new(association))
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ row
74
+ end
75
+ rows
76
+ end
77
+ end
78
+ end
79
+
@@ -1,3 +1,3 @@
1
1
  module SqlEnum
2
- VERSION = "0.1.10"
2
+ VERSION = "0.1.11"
3
3
  end
data/lib/sql_enum.rb CHANGED
@@ -23,6 +23,7 @@ end
23
23
  require_relative 'active_record/enum/enum_type'
24
24
  require_relative 'active_record/type/enum'
25
25
  require_relative 'active_record/enum_override'
26
+ require_relative 'active_record/fixtures_override'
26
27
  require_relative 'active_record/connection_adapters/mysql2'
27
28
  require_relative 'active_record/connection_adapters/abstract_mysql'
28
29
  require_relative 'active_record/connection_adapters/mysql/column_methods'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sql_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Fowler
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-01 00:00:00.000000000 Z
11
+ date: 2018-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -89,8 +89,8 @@ files:
89
89
  - lib/active_record/connection_adapters/mysql2.rb
90
90
  - lib/active_record/enum/enum_type.rb
91
91
  - lib/active_record/enum_override.rb
92
+ - lib/active_record/fixtures_override.rb
92
93
  - lib/active_record/type/enum.rb
93
- - lib/array.rb
94
94
  - lib/sql_enum.rb
95
95
  - lib/sql_enum/version.rb
96
96
  - sql_enum.gemspec
data/lib/array.rb DELETED
@@ -1,5 +0,0 @@
1
- Array.class_eval do
2
- def fetch(key, default)
3
- key if self.include?(key&.to_s)
4
- end
5
- end