modalfields 1.5.3 → 1.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/modalfields/modalfields.rb +20 -3
- data/modalfields.gemspec +2 -2
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.5.
|
1
|
+
1.5.4
|
@@ -80,7 +80,12 @@ module ModalFields
|
|
80
80
|
blk[model, column_declaration]
|
81
81
|
}
|
82
82
|
end
|
83
|
-
|
83
|
+
def field_migration(type, &blk)
|
84
|
+
ModalFields.migration_hooks[type.to_sym] = lambda{|model, column_declaration|
|
85
|
+
blk[model, column_declaration]
|
86
|
+
}
|
87
|
+
end
|
88
|
+
# generic filter applied to all the fields (after a specific filter for the type, if there is one)
|
84
89
|
def all_fields(&blk)
|
85
90
|
field_type :all_fields, &blk
|
86
91
|
end
|
@@ -147,6 +152,7 @@ module ModalFields
|
|
147
152
|
|
148
153
|
@show_primary_keys = false
|
149
154
|
@hooks = {}
|
155
|
+
@migration_hooks = {}
|
150
156
|
@definitions = {}
|
151
157
|
@column_to_field_declaration_hook = nil
|
152
158
|
@type_aliases = {}
|
@@ -158,7 +164,7 @@ module ModalFields
|
|
158
164
|
|
159
165
|
class <<self
|
160
166
|
|
161
|
-
attr_reader :hooks, :definitions
|
167
|
+
attr_reader :hooks, :migration_hooks, :definitions
|
162
168
|
# Define declaration of primary keys
|
163
169
|
# ModalFields.show_primary_keys = false # the default: do not show primary keys
|
164
170
|
# ModalFields.show_primary_keys = true # always declare primary keys
|
@@ -261,7 +267,9 @@ module ModalFields
|
|
261
267
|
up = ""
|
262
268
|
down = ""
|
263
269
|
dbmodels(dbmodel_options).each do |model, file|
|
264
|
-
new_fields, modified_fields, deleted_fields, deleted_model = diff(model)
|
270
|
+
new_fields, modified_fields, deleted_fields, deleted_model = diff(model).map{|fields|
|
271
|
+
fields.kind_of?(Array) ? fields.map{|f| migration_declaration(model, f)} : fields
|
272
|
+
}
|
265
273
|
unless new_fields.empty? && modified_fields.empty? && deleted_fields.empty?
|
266
274
|
up << "\n"
|
267
275
|
down << "\n"
|
@@ -288,6 +296,7 @@ module ModalFields
|
|
288
296
|
end
|
289
297
|
modified_fields.each do |field|
|
290
298
|
changed = model.fields_info.find{|f| f.name.to_sym==field.name.to_sym}
|
299
|
+
changed &&= migration_declaration(model, changed)
|
291
300
|
up << " change_column #{model.table_name.to_sym.inspect}, #{changed.name.inspect}, #{changed.type.inspect}"
|
292
301
|
unless changed.attributes.empty?
|
293
302
|
up << ", " + changed.attributes.inspect.unwrap('{}')
|
@@ -355,6 +364,7 @@ module ModalFields
|
|
355
364
|
|
356
365
|
assoc_cols = []
|
357
366
|
association_fields.each do |assoc, cols|
|
367
|
+
|
358
368
|
if options[:associations]
|
359
369
|
if assoc.options[:polymorphic]
|
360
370
|
foreign_table = :polymorphic
|
@@ -365,6 +375,7 @@ module ModalFields
|
|
365
375
|
end
|
366
376
|
Array(cols).each do |col|
|
367
377
|
col = existing_fields.find{|f| f.name.to_s==col.to_s}
|
378
|
+
next unless col
|
368
379
|
assoc_cols << col
|
369
380
|
if options[:foreign_keys]
|
370
381
|
yield :foreign_key, model.table_name, col.name, field_data(col, :assoc=>assoc)
|
@@ -405,6 +416,12 @@ module ModalFields
|
|
405
416
|
|
406
417
|
private
|
407
418
|
|
419
|
+
def migration_declaration(model, field_declaration)
|
420
|
+
hook = ModalFields.migration_hooks[field_declaration.type.to_sym]
|
421
|
+
hook[model, field_declaration] if hook
|
422
|
+
field_declaration
|
423
|
+
end
|
424
|
+
|
408
425
|
def field_data(field_info, options={})
|
409
426
|
comments = options[:comments]
|
410
427
|
extra = options[:extra]
|
data/modalfields.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "modalfields"
|
8
|
-
s.version = "1.5.
|
8
|
+
s.version = "1.5.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Javier Goizueta"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-11-03"
|
13
13
|
s.description = "ModelFields is a Rails plugin that adds fields declarations to your models."
|
14
14
|
s.email = "jgoizueta@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modalfields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.4
|
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-
|
12
|
+
date: 2012-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: modalsettings
|
@@ -233,7 +233,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
233
233
|
version: '0'
|
234
234
|
segments:
|
235
235
|
- 0
|
236
|
-
hash:
|
236
|
+
hash: 1579727335010119279
|
237
237
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
238
|
none: false
|
239
239
|
requirements:
|