carrierwave-serializable 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b60eb5963693bba15ca8f556a5d151b5ce65c441
4
- data.tar.gz: e0615f175ed33ad7d337efd90bb11cb7ee023d4a
3
+ metadata.gz: 82365049a37fc90c0cdf9e0ac27e35a86556c275
4
+ data.tar.gz: 30037ac9507ba6cb2551566f3db61353d99361d0
5
5
  SHA512:
6
- metadata.gz: d544436349c1c3288c381b13f32abedaaa6a6430915aa7b928bd347ef5a0d7adb6d95ccf5f4452aaced8ec5551a2ad5cccb1d765b44f9014db5d8768d6c24164
7
- data.tar.gz: b1e8219d387464ead134761eb52d595b62d665e0cbce140fc9038e572eef5e9e023d79187574d7130a9de705b1db27470c59e5d90a011c90c9fc4aca3392338b
6
+ metadata.gz: d227f799b2f810b6736ad0208e51bde94a499432e8bc5160ad7b3d0a4b756e0bd8166a2a2754063528d4cf8599a1f14b9a380c3b6ceb70ab3970ca128f3c93ee
7
+ data.tar.gz: 2345d755b69a02df0ce3255f3a55f5145dd5e979d0b9f8f28531668d9cae68740f86351c971130a3b874c2482c91992236089da24cac1e74e9652d2096d2c175
@@ -6,27 +6,11 @@ module CarrierWave
6
6
  module ActiveRecord
7
7
  module Serializable
8
8
  def serialized_uploaders
9
- @serialized_uploaders ||= {}
10
- end
11
-
12
- def serialized_uploader?(column)
13
- attribute_name = serialized_uploaders[column].to_s
14
- serialized_uploaders.key?(column) && (serialized_attribute?(attribute_name) ||
15
- hstore_attribute?(attribute_name) ||
16
- json_attribute?(attribute_name))
17
-
9
+ @serialized_uploaders ||= read_from_superclass? ? superclass.serialized_uploaders : {}
18
10
  end
19
11
 
20
- def serialized_attribute?(attribute)
21
- serialized_attributes.key?(attribute)
22
- end
23
-
24
- def hstore_attribute?(attribute)
25
- columns_hash[attribute.to_s].type == :hstore
26
- end
27
-
28
- def json_attribute?(attribute)
29
- columns_hash[attribute.to_s].type == :json
12
+ def serialized_uploader?(column)
13
+ serialized_uploaders.key?(column)
30
14
  end
31
15
 
32
16
  ##
@@ -34,43 +18,53 @@ module CarrierWave
34
18
  #
35
19
  def mount_uploader(column, uploader=nil, options={}, &block)
36
20
  super
37
-
21
+
38
22
  serialize_to = options.delete :serialize_to
39
23
  if serialize_to
40
- serialized_uploaders[column] = serialize_to
24
+ serialization_column = options[:mount_on] || column
25
+ serialized_uploaders[serialization_column] = serialize_to
41
26
  class_eval <<-RUBY, __FILE__, __LINE__+1
42
- def #{column}_will_change!
27
+ def #{serialization_column}_will_change!
43
28
  #{serialize_to}_will_change!
44
- @#{column}_changed = true
29
+ @#{serialization_column}_changed = true
45
30
  end
46
31
 
47
- def #{column}_changed?
48
- @#{column}_changed
32
+ def #{serialization_column}_changed?
33
+ @#{serialization_column}_changed
49
34
  end
50
35
  RUBY
51
-
52
-
53
- class_eval <<-RUBY, __FILE__, __LINE__+1
54
- def write_uploader(column, identifier)
55
- if self.class.serialized_uploader?(column)
56
- serialized_field = self.send self.class.serialized_uploaders[column]
36
+ end
37
+ class_eval <<-RUBY, __FILE__, __LINE__+1
38
+ def write_uploader(column, identifier)
39
+ if self.class.serialized_uploader?(column)
40
+ serialized_field_name = self.class.serialized_uploaders[column].to_s
41
+
42
+ if serialized_field = self.send(serialized_field_name)
57
43
  serialized_field[column.to_s] = identifier
58
44
  else
59
- super
45
+ self.send "\#{serialized_field_name}=", column.to_s => identifier
60
46
  end
47
+ else
48
+ write_attribute(column, identifier)
61
49
  end
62
-
63
- def read_uploader(column)
64
- if self.class.serialized_uploader?(column)
65
- serialized_field = self.send self.class.serialized_uploaders[column]
66
- serialized_field[column.to_s]
67
- else
68
- super
69
- end
50
+ end
51
+
52
+ def read_uploader(column)
53
+ if self.class.serialized_uploader?(column)
54
+ serialized_field = self.send self.class.serialized_uploaders[column]
55
+ serialized_field ? serialized_field[column.to_s] : nil
56
+ else
57
+ read_attribute(column)
70
58
  end
71
- RUBY
72
-
73
- end
59
+ end
60
+ RUBY
61
+
62
+ end
63
+
64
+ private
65
+
66
+ def read_from_superclass?
67
+ superclass != ::ActiveRecord::Base && superclass.respond_to?(:serialized_uploaders)
74
68
  end
75
69
  end # Serializable
76
70
  end # ActiveRecord
@@ -1,5 +1,5 @@
1
1
  module CarrierWave
2
2
  module Serializable
3
- VERSION = '0.0.5'
3
+ VERSION = '0.0.6'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-serializable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tima Maslyuchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-22 00:00:00.000000000 Z
11
+ date: 2015-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carrierwave
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: Carrierwave plugin that allow mount uploader to serialized field
@@ -31,7 +31,7 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
- - .gitignore
34
+ - ".gitignore"
35
35
  - Gemfile
36
36
  - LICENSE.txt
37
37
  - README.md
@@ -50,18 +50,19 @@ require_paths:
50
50
  - lib
51
51
  required_ruby_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  requirements: []
62
62
  rubyforge_project:
63
- rubygems_version: 2.0.3
63
+ rubygems_version: 2.2.2
64
64
  signing_key:
65
65
  specification_version: 4
66
66
  summary: Carrierwave plugin that allow mount uploader to serialized field
67
67
  test_files: []
68
+ has_rdoc: