tramway-core 1.6.3 → 1.6.4

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
  SHA256:
3
- metadata.gz: efdc4a5a5751cc69f9c125314d352f6130c001c606ecfab121ecef2b0399ae7f
4
- data.tar.gz: 38b5a27d2cde376f3a5ec5b967f4c7ab2236f0c118e65bb2be537ab6452dfc6a
3
+ metadata.gz: a7a31d83fb7b26555a3b8576ca1b95e411be1b37cdf17a06fd799e2a07623201
4
+ data.tar.gz: 0f6f62ec9a9e36575747947c55932dedbab9292c77e05012d5dd66020f29aa8d
5
5
  SHA512:
6
- metadata.gz: 6bef5ae0da8faec96f405f3563e750e0870e5d112a80910b3032b9b5cb766ab07713515cd6b2b4f7d2359cfff251e0cffa7acf9c357a28e071b021530edf6c84
7
- data.tar.gz: 9605911b8fa87c42e09b495a096a0452305533fca3fa9957eda6e6840a88df1bed23bb0ff248511d020a59b58705074c7ba309a890373a0a4f7320f7ce1ae542
6
+ metadata.gz: 6d5166de9d1a332ccc120d027d6563c93fcbdbb499236bf01e8019add7cdb3900e72c3551a5c0761fcd0b0f1169b1511a24e5d1c13fa9149cc078bc4f0283b55
7
+ data.tar.gz: ffa7418423d002e5efb9809db865bdcd6132d92485968f79876ba729bcfc1f05d5c0ad41f1f2236e0c6e9c127b41e29b9f02ea7093a933e42249cc09b05d48d5
@@ -15,3 +15,6 @@
15
15
  cursor: pointer
16
16
  &:hover
17
17
  opacity: 0.8
18
+
19
+ .circle
20
+ border-radius: 50%
@@ -27,14 +27,20 @@ class Tramway::Core::ApplicationDecorator
27
27
  end
28
28
  end
29
29
 
30
- def decorate_association(association_name)
30
+ def decorate_association(association_name, decorator: nil)
31
31
  @@decorated_associations ||= []
32
32
  @@decorated_associations << association_name
33
33
 
34
34
  define_method association_name do
35
35
  class_name = object.class.reflect_on_association(association_name).options[:class_name]
36
- object.send(association_name).map do |association_object|
37
- "#{class_name}Decorator".constantize.decorate association_object
36
+ #FIXME use error abstraction
37
+ unless class_name
38
+ raise "Please, specify `#{association_name}` association class_name in #{object.class} model. For example: `has_many :#{association_name}, class_name: 'ModelName'`"
39
+ end
40
+
41
+ object.send(association_name).active.map do |association_object|
42
+ decorator_class_name = decorator || "#{class_name.singularize}Decorator".constantize
43
+ decorator_class_name.decorate association_object
38
44
  end
39
45
  end
40
46
  end
@@ -5,13 +5,7 @@ module Tramway::Core
5
5
  @@model_class = object.class
6
6
  @@enumerized_attributes = object.class.enumerized_attributes
7
7
 
8
- @@associations&.each do |association|
9
- options = object.class.reflect_on_all_associations(:belongs_to).select do |a|
10
- a.name == association.to_sym
11
- end.first&.options
12
- next unless options
13
-
14
- class_name = options[:class_name].constantize
8
+ self.class.full_class_name_associations.each do |association, class_name|
15
9
  self.class.send(:define_method, "#{association}=") do |value|
16
10
  super class_name.find value
17
11
  end
@@ -40,6 +34,26 @@ module Tramway::Core
40
34
  @@associations ||= []
41
35
  @@associations << property
42
36
  end
37
+
38
+ def associations(*properties)
39
+ properties.each do |property|
40
+ association property
41
+ end
42
+ end
43
+
44
+ def full_class_name_associations
45
+ @@associations&.reduce({}) do |hash, association|
46
+ options = @@model_class.reflect_on_all_associations(:belongs_to).select do |a|
47
+ a.name == association.to_sym
48
+ end.first&.options
49
+
50
+ options ? hash.merge!(association => options[:class_name].constantize) : hash
51
+ end
52
+ end
53
+
54
+ def full_class_name_association(association_name)
55
+ full_class_name_associations[association_name]
56
+ end
43
57
 
44
58
  def enumerized_attributes
45
59
  @@enumerized_attributes
@@ -1,5 +1,5 @@
1
1
  module Tramway
2
2
  module Core
3
- VERSION = '1.6.3'
3
+ VERSION = '1.6.4'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.3
4
+ version: 1.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-02 00:00:00.000000000 Z
11
+ date: 2018-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reform-rails