active_content 0.1.8 → 0.1.9

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
- 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