active_content 0.1.8 → 0.1.9

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
- SHA1:
3
- metadata.gz: 7510f9d1701844c92e4c71c2decb61d099fac13d
4
- data.tar.gz: eafeb3039e67ed9bd03a492f72ca5ac1b878575e
2
+ SHA256:
3
+ metadata.gz: 69e6ab100952a697d93027b3085740b05123598010faa3ca3a24528292ecc879
4
+ data.tar.gz: fe9d1068cafd56ae2e212110d15cbbfefe8b559e09f69bfc52d3b614b4ebd5fa
5
5
  SHA512:
6
- metadata.gz: a1bf8fdc8ff72561a776bcfb02f4eb5cf40f884b48b2c6f027f11214cdb2f2680b33527f95db25461a8e2ea5039ac64548f3be1b5fe17aa89e2e86cd78df0981
7
- data.tar.gz: fe55086fa3aaee10049dbabea378137bbd6320ffe7043a630369209db401106665312df450d0082bbc5f4aaeee6348c77f38390664249e4e8a0fdcdd78b7521f
6
+ metadata.gz: 240307abe84eab9d13e0d84e19025f5ddfe038e3f0c852cc1a6d0939249fbf3004b3a3544e0e218a1c9a45da682fe8ef406571e9310dc6bcac4d71b46af9f255
7
+ data.tar.gz: 843821d493f12f804721e72f1962c6ee06dfa094c315acf8ecf6c3526f6a5e01cbab720d9b011ece5eca12a4f0cbf8f19a18f1286583b17f48e09cb366e6e89c
@@ -1,12 +1,51 @@
1
1
  class ActiveContent::Profile < ActiveRecord::Base
2
+ # Define class attributes
3
+ class_attribute :image_uploaders
4
+
2
5
  # Set table name
3
6
  self.table_name = 'profiles'
4
7
 
5
8
  # Belongs associations
6
9
  belongs_to :profileable, polymorphic: true, optional: true
7
10
 
8
- # Mount carrierwave uploader
9
- mount_uploader :image
11
+ # Pick correct uploader after initialize for profileable class
12
+ after_initialize do
13
+ class_name = :"#{profileable.class.name.underscore}_image"
14
+ base_class = :"#{profileable.class.base_class.name.underscore}_image"
15
+
16
+ self.class.uploaders[:image] = begin
17
+ self.class.image_uploaders[class_name] ||
18
+ self.class.image_uploaders[base_class] ||
19
+ self.class.image_uploaders[:image]
20
+ end
21
+ end
22
+
23
+ # Build new image uploader class
24
+ def self.build_image_uploader(assoc_name, uploader_class)
25
+ if uploader_class
26
+ uploader = Class.new(uploader_class)
27
+ const_set("#{assoc_name}#{uploader_class}", uploader)
28
+
29
+ uploader.class_eval do
30
+ alias :original_model :model
31
+
32
+ def model
33
+ original_model.profileable
34
+ end
35
+ end
36
+
37
+ uploader
38
+ end
39
+ end
40
+
41
+ # Add uploader for a profilable class
42
+ def self.add_image_uploader(assoc_name, uploader)
43
+ self.image_uploaders ||= {}
44
+ self.mount_uploader :image, build_image_uploader(assoc_name, uploader)
45
+
46
+ class_name = uploader ? :"#{assoc_name.underscore}_image" : :image
47
+ self.image_uploaders[class_name] = self.uploaders[:image]
48
+ end
10
49
 
11
50
  # Name composed by first and last name
12
51
  def name
@@ -6,9 +6,14 @@ module ActiveContent
6
6
  def has_profile(options={})
7
7
  include ActiveDelegate
8
8
 
9
- has_one :profile, as: :profileable, class_name: 'ActiveContent::Profile', autosave: true, dependent: :destroy
9
+ assoc_class = options.delete(:class_name) || 'ActiveContent::Profile'
10
+ image_uploader = options.delete(:uploader)
11
+
12
+ has_one :profile, as: :profileable, class_name: assoc_class, autosave: true, dependent: :destroy
10
13
  delegate_attributes options.except(:to).merge(to: :profile, allow_nil: true)
11
14
 
15
+ ActiveContent::Profile.add_image_uploader name, image_uploader
16
+
12
17
  before_save do
13
18
  prof_foreign = self.class.profiles_attribute_names.map(&:to_s)
14
19
  prof_current = prof_foreign.map { |n| send(n) }
@@ -1,3 +1,3 @@
1
1
  module ActiveContent
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_content
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olibia Tsati
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-12-18 00:00:00.000000000 Z
12
+ date: 2018-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  version: '0'
185
185
  requirements: []
186
186
  rubyforge_project:
187
- rubygems_version: 2.6.13
187
+ rubygems_version: 2.7.7
188
188
  signing_key:
189
189
  specification_version: 4
190
190
  summary: STI ActiveRecord models for dynamic CMS models