effective_resources 1.8.1 → 1.8.2

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: ba1ab3c1064882ff12132711f5b5e52baffd2448ca53097739f6fc5da17ded8e
4
- data.tar.gz: 0444d91c34c0e2bccae26dbd042d80d491d829e19f6f0dccf720ad975eb0ee14
3
+ metadata.gz: fc4db438688ecdd123360281ec6cfbe5b7aede01451615bcee92c566f186081c
4
+ data.tar.gz: fa9154d7b1942bd0e8023f8795b670313260bc0cb7c22b84f2cd9c8d993e8ee1
5
5
  SHA512:
6
- metadata.gz: 1bed68ed75113db85e5a10372dd148847464855f7bee2d4699366efdb3df2046a1e8ca001c9c6fadee838b6f67b5f900ca7429a9888b286c66db1db17d2e7996
7
- data.tar.gz: 0caf48a95cb7600b104fe0ca679c9780552fc99f61e1f8ce005b5e24f241a93cd340c6222ee3ce43a6ab85e93380511d1b5184c25795a5138423fb35b2cbd78c
6
+ metadata.gz: 80b67a72b7a4f700b788d906a4db3c7e6e58f758f1d8f64d31178875c11c8021df2c706b86763efeba151a44b62cd07d19b46b0c2d354a20dd0831ee04aef89f
7
+ data.tar.gz: 1f18e82c58fdae3ff884659c7166825727a19e90a28a55add1d952dea32e7ee3cdabe1bf251b7bbb83d8c72017c99df22defffedf8d9720092a24876c212175b
@@ -42,6 +42,11 @@ module ActsAsSlugged
42
42
 
43
43
  where(slug: args.first).or(where(id: args.first)).first || raise(::ActiveRecord::RecordNotFound.new("Couldn't find #{name} with 'slug'=#{args.first}"))
44
44
  end
45
+
46
+ def find_by_slug_or_id(*args)
47
+ where(slug: args.first).or(where(id: args.first)).first
48
+ end
49
+
45
50
  end
46
51
 
47
52
  # Instance Methods
@@ -0,0 +1,56 @@
1
+ # HasManyRichTexts
2
+ #
3
+ # Mark your model with 'has_many_rich_texts' and then any method missing is a rich text region
4
+
5
+ module HasManyRichTexts
6
+ extend ActiveSupport::Concern
7
+
8
+ module Base
9
+ def has_many_rich_texts(options = nil)
10
+ include ::HasManyRichTexts
11
+ end
12
+ end
13
+
14
+ included do
15
+ has_many :rich_texts, class_name: 'ActionText::RichText', as: :record, inverse_of: :record, dependent: :destroy
16
+ accepts_nested_attributes_for :rich_texts, allow_destroy: true
17
+ end
18
+
19
+ module ClassMethods
20
+ end
21
+
22
+ # Find or build
23
+ def rich_text(name)
24
+ name = name.to_s
25
+ rich_texts.find { |rt| rt.name == name } || rich_texts.build(name: name)
26
+ end
27
+
28
+ def rich_text_body=(name, body)
29
+ rich_text(name).assign_attributes(body: body)
30
+ end
31
+
32
+ # Prevents an ActiveModel::UnknownAttributeError
33
+ # https://github.com/rails/rails/blob/main/activemodel/lib/active_model/attribute_assignment.rb#L48
34
+ def respond_to?(*args)
35
+ method = args.first.to_s
36
+ return false if ['to_a', 'to_ary'].any? { |str| method == str }
37
+ return false if ['_by', '_at', '_id', '_by=', '_at=', 'id='].any? { |str| method.end_with?(str) }
38
+ true
39
+ end
40
+
41
+ def method_missing(method, *args, &block)
42
+ super if block_given?
43
+ super unless respond_to?(method)
44
+
45
+ method = method.to_s
46
+
47
+ if method.end_with?('=') && args.length == 1 && (args.first.kind_of?(String) || args.first.kind_of?(NilClass))
48
+ send(:rich_text_body=, method.chomp('='), *args)
49
+ elsif args.length == 0
50
+ send(:rich_text, method, *args)
51
+ else
52
+ super
53
+ end
54
+ end
55
+
56
+ end
@@ -27,6 +27,7 @@ module EffectiveResources
27
27
  ActiveRecord::Base.extend(ActsAsSlugged::Base)
28
28
  ActiveRecord::Base.extend(ActsAsStatused::Base)
29
29
  ActiveRecord::Base.extend(ActsAsWizard::Base)
30
+ ActiveRecord::Base.extend(HasManyRichTexts::Base)
30
31
 
31
32
  ActiveRecord::Base.extend(EffectiveDeviseUser::Base)
32
33
  ActiveRecord::Base.extend(EffectiveResource::Base)
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '1.8.1'.freeze
2
+ VERSION = '1.8.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-02 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -143,6 +143,7 @@ files:
143
143
  - app/models/concerns/acts_as_wizard.rb
144
144
  - app/models/concerns/effective_devise_user.rb
145
145
  - app/models/concerns/effective_resource.rb
146
+ - app/models/concerns/has_many_rich_texts.rb
146
147
  - app/models/effective/access_denied.rb
147
148
  - app/models/effective/action_failed.rb
148
149
  - app/models/effective/attribute.rb