safe_polymorphic 0.1.2 → 0.1.3

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: 164e389f0104c35deef618728e27279f0f1efb563398cec61c4c4c6611972f1b
4
- data.tar.gz: 9ee365c0242b60164baac2f00f338334f99c73b96e661eea11ffd3f60aa225d3
3
+ metadata.gz: e2343d183e1afc06a3571606a2631753284c943eb1079fdd09498e8153b4e254
4
+ data.tar.gz: a6f105af6c4ac6ac1484f63339fc5bb71429a3f947bfc9a96b10ea7fce92893f
5
5
  SHA512:
6
- metadata.gz: c9f0e945aeabcf77b7cf35b7b491df63dc97e86fa0d30500d31b2424880bb42543b0310f8f1840e8a9dbab57088292670e36097e7e3c2be7f0b32959299e3074
7
- data.tar.gz: 1c64d72005b5c64007a00286bca4ca9bab89753efff0636c33d5b1e103af5f3d5465ec777d87033eabf8372a38372a2973b7b57c6353f8d252d374eb64bab345
6
+ metadata.gz: 91a5dc3f1d3195a6ebf3fdc1a6c34a6c021a7685a46ac631859b9fcb9971864e374e50c9b6ba61941891346b47171ffa2d9d42d5ac5a0cfa39a6ec50cf4f6dce
7
+ data.tar.gz: ea87992a43a22e74d264112b5db178ccebd353d5ba18cd59ac8c21796904af6f69df23c90700656812ac1e389d0364af29bd46d56c9f8701b868a5c77616bea6
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- safe_polymorphic (0.1.2)
5
- activerecord (>= 5.2, < 7.1)
4
+ safe_polymorphic (0.1.3)
5
+ activerecord (>= 5.2, < 8.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -76,6 +76,7 @@ GEM
76
76
 
77
77
  PLATFORMS
78
78
  arm64-darwin-21
79
+ arm64-darwin-23
79
80
  x86_64-linux
80
81
 
81
82
  DEPENDENCIES
data/README.md CHANGED
@@ -1,14 +1,27 @@
1
- # SafePolymorphic
2
- [![Gem Version](https://badge.fury.io/rb/safe_polymorphic.svg)](https://badge.fury.io/rb/safe_polymorphic)
1
+ [![Gem Version](https://badge.fury.io/rb/safe_polymorphic.svg)](https://badge.fury.io/rb/safe_polymorphic.svg)
3
2
  [![Ruby](https://github.com/gogrow-dev/safe_polymorphic/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/gogrow-dev/safe_polymorphic/actions/workflows/main.yml)
4
3
  [![Maintainability](https://api.codeclimate.com/v1/badges/1b0a4b92bbee2be50dc1/maintainability)](https://codeclimate.com/github/gogrow-dev/safe_polymorphic/maintainability)
5
4
  [![Test Coverage](https://api.codeclimate.com/v1/badges/1b0a4b92bbee2be50dc1/test_coverage)](https://codeclimate.com/github/gogrow-dev/safe_polymorphic/test_coverage)
6
5
 
7
- ActiveRecord extension which allows us to safely use polymorphic associations, by validating which classes are allowed to be related to, while also adding scopes and helper methods.
6
+ # SafePolymorphic
7
+
8
+ > The best way to keep your polymorphic relationships safe.
9
+
10
+ <img align="right" width="150" title="SafePolymorphic logo" src="./logo.png">
11
+
12
+ An ActiveRecord extension for polymorphic associations.
13
+
14
+ * **Simple.** It is as easy to use as it is to update.
15
+ * **Safe.** It helps you avoid unintended usage of polymorphic classes.
16
+ * **Powerful.** It packages some helpful scopes and helper methods.
17
+
18
+ <a href="https://gogrow.dev/?utm_source=github&utm_content=safe_polymorphic">
19
+ <img src="https://www.gogrow.dev/_next/static/media/gogrow-logo.96254aba.svg" alt="Built by GoGrow" width="230"></a>
8
20
 
9
- The base idea was taken from this blogpost: [Improve ActiveRecord Polymorphic Associations - Head of engineering at Product Hunt](https://blog.rstankov.com/allowed-class-names-in-activerecord-polymorphic-associations/).
10
21
 
11
- ## Installation
22
+ > Credits: [Improve ActiveRecord Polymorphic Associations](https://blog.rstankov.com/allowed-class-names-in-activerecord-polymorphic-associations/).
23
+
24
+ ## Install
12
25
 
13
26
  Install the gem and add to the application's Gemfile by executing:
14
27
 
@@ -23,23 +36,23 @@ If bundler is not being used to manage dependencies, install the gem by executin
23
36
  In your model you can do the following:
24
37
 
25
38
  ```ruby
26
- class Book < ActiveRecord::Base
27
- belongs_to :owner, polymorphic: [User, Publisher]
39
+ class Address < ActiveRecord::Base
40
+ belongs_to :addressabel, polymorphic: [User, Company]
28
41
  end
29
42
  ```
30
43
 
31
44
  Define a `belongs_to` relatinoship and instead of just adding the option `polymorphic: true`, we are able to specify the allowed polymorphic classes.
32
45
 
33
- By using this, we will create a polymorphic relationship in `Book` called `owner` which can only be a `User` or a `Publisher`.
34
- If we try to set an `owner` from a class rather than the aforementioend ones, it will return the following error:
46
+ By using this, we will create a polymorphic relationship in `Address` called `addressable` which can only be a `User` or a `Company`.
47
+ If we try to set an `addressable` from a class rather than the aforementioend ones, it will return the following error:
35
48
  ```ruby
36
- #ActiveRecord::RecordInvalid: Validation failed: Owner type OtherThing class is not an allowed class.
49
+ #ActiveRecord::RecordInvalid: Validation failed: Addressable type OtherThing class is not an allowed class.
37
50
  ```
38
51
 
39
52
  We can also use strings and symbols instead of the classes themselves:
40
53
  ```ruby
41
- class Book < ActiveRecord::Base
42
- belongs_to :owner, polymorphic: [:user, 'Publisher']
54
+ class Address < ActiveRecord::Base
55
+ belongs_to :addressable, polymorphic: [:user, 'Company']
43
56
  end
44
57
  ```
45
58
  Provided that the strings and symbols translate to existing classes when used with `.classify.constantize`.
@@ -47,27 +60,27 @@ Provided that the strings and symbols translate to existing classes when used wi
47
60
  ### Usage with namespaced models
48
61
 
49
62
  ```ruby
50
- class Book < ActiveRecord::Base
51
- belongs_to :owner, polymorphic: [Publisher::User, Publisher]
63
+ class Address < ActiveRecord::Base
64
+ belongs_to :addressable, polymorphic: [Company::User, Company]
52
65
  end
53
66
  ```
54
67
 
55
68
  ### Helper methods
56
69
 
57
70
  Class methods:
58
- - `Book.owner_types`: returns the allowed classes
59
- - `Book.with_owner(#{type})`: generic finder method
60
- - `Book.with_owner_#{allowed_class_name}`: scope for each allowed class
71
+ - `Address.addressable_types`: returns the allowed classes
72
+ - `Address.with_addressable(#{type})`: generic finder method
73
+ - `Address.with_addressable_#{allowed_class_name}`: scope for each allowed class
61
74
 
62
75
  Instance methods:
63
- - `book.owner_type_#{allowed_class_name}?`: check if it is from that specific class
76
+ - `Address.addressable_type_#{allowed_class_name}?`: check if it is from that specific class
64
77
 
65
78
  ### Helper methods with namespaced models
66
79
 
67
80
  Class methods:
68
- - `Book.with_owner(Publisher::User)`
69
- - `Book.with_owner_publisher_user`
70
- - `book.owner_type_publisher_user?`
81
+ - `Address.with_addressable(Company::User)`
82
+ - `Address.with_addressable_company_user`
83
+ - `Address.addressable_type_company_user?`
71
84
 
72
85
  ## I18n
73
86
 
@@ -89,15 +102,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
89
102
 
90
103
  ## Contributing
91
104
 
92
- Bug reports and pull requests are welcome on GitHub at https://github.com/gogrow-dev/safe_polymorphic. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/gogrow-dev/safe_polymorphic/blob/main/CODE_OF_CONDUCT.md).
93
-
94
- ## Code of Conduct
95
-
96
- Everyone interacting in the SafePolymorphic project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/gogrow-dev/safe_polymorphic/blob/main/CODE_OF_CONDUCT.md).
97
-
98
- ## Credits
99
-
100
- belongs_to_polymorphic is maintained by [GoGrow](https://gogrow.dev) with the help of our
101
- [contributors](https://github.com/gogrow-dev/belongs_to_polymorphic/contributors).
102
-
103
- [<img src="https://user-images.githubusercontent.com/9309458/180014465-00477428-fd76-48f6-b984-5b401b8ce241.svg" height="50"/>](https://gogrow.dev)
105
+ Bug reports and pull requests are welcome on GitHub. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](./CODE_OF_CONDUCT.md).
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SafePolymorphic
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
data/logo.png ADDED
Binary file
@@ -31,5 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.add_dependency 'activerecord', '>= 5.2', '< 7.1'
34
+ spec.add_dependency 'activerecord', '>= 5.2', '< 8.0'
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_polymorphic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Erlichman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-28 00:00:00.000000000 Z
11
+ date: 2024-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '8.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
32
+ version: '8.0'
33
33
  description: ActiveRecord extension which allows us to safely use polymorphic associations,
34
34
  by validatingwhich classes are allowed to be related to, while also adding scopes
35
35
  and helper methods.
@@ -52,6 +52,7 @@ files:
52
52
  - lib/safe_polymorphic/associations.rb
53
53
  - lib/safe_polymorphic/locales/en.yml
54
54
  - lib/safe_polymorphic/version.rb
55
+ - logo.png
55
56
  - safe_polymorphic.gemspec
56
57
  homepage: https://github.com/gogrow-dev/safe_polymorphic
57
58
  licenses: