active_record-associated_object 0.5.0 → 0.5.1

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: 7f8b62e508398ddb7a6822eab1ddd89f744bf4f795f6a824c0f1af9501878d2a
4
- data.tar.gz: 22e627a8a19fd92f4ea188252550fda880df8da7d847bb9bb47e4e15afd84ddf
3
+ metadata.gz: 183e19260b1d449e28b760db3736cc6ca82506064c24c24cec9ecf4333d4b441
4
+ data.tar.gz: 01fc12b34d5eaee9ebb1fccfe9183287022e6a6e314a98739867bf94061fde29
5
5
  SHA512:
6
- metadata.gz: 9e0267e09ed36917900870a7c76f515fcc7328730e60c11e525cb9610622edc03cd471e900bbec67e7a6a0f98933cde466e9804d77ab8681976e06bdcd3e6810
7
- data.tar.gz: 3bec7180bb66a6219791a65ca76a51a384594333c3d2babe5dd8f13e2b61d8eb9be9f6a3b0a910ea2e56b972e82dc010c46a22b52841f6ba860615bebe9bd4f0
6
+ metadata.gz: 1439d66acf12abe1a26cddebefe0900826a04afc85be171d3622a665810c2ecce7e849098fa3a901aef84d99ddbfd16f33f455c8ad1822e1009f938a8734c0b5
7
+ data.tar.gz: a750d3c644db9b92a097b5fb69d794f6b48cfa02b7bacd9559bded8e4fa67be7ed19a869501326560c79c35e9b90bebfaa4a18392192e299f61acedd2b328a37
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_record-associated_object (0.5.0)
4
+ active_record-associated_object (0.5.1)
5
5
  activerecord (>= 6.1)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -44,11 +44,47 @@ class Post::Publisher < ActiveRecord::AssociatedObject
44
44
  end
45
45
  ```
46
46
 
47
- ### How `performs` removes Active Job boilerplate
47
+ ### Namespaced models
48
48
 
49
- `performs` comes from the `active_job-performs` gem and is automatically bundled with `ActiveRecord::AssociatedObject`.
49
+ If you have a namespaced Active Record like this:
50
50
 
51
- With an associated object like this:
51
+ ```ruby
52
+ # app/models/post/comment.rb
53
+ class Post::Comment < ApplicationRecord
54
+ belongs_to :post
55
+
56
+ has_object :rating
57
+ end
58
+ ```
59
+
60
+ You can define the associated object in the same way it was done for `Post::Publisher` above, within the `Post::Comment` namespace:
61
+
62
+ ```ruby
63
+ # app/models/post/comment/rating.rb
64
+ class Post::Comment::Rating < ActiveRecord::AssociatedObject
65
+ def great?
66
+ # A `comment` method is generated to access the associated comment. There's also a `record` alias available.
67
+ comment.author.subscriber_of? comment.post.author
68
+ end
69
+ end
70
+ ```
71
+
72
+ ### Composite primary keys
73
+
74
+ We support Active Record models with composite primary keys out of the box.
75
+
76
+ Just setup the associated objects like the above examples and you've got GlobalID/Active Job and Kredis support automatically.
77
+
78
+ ### Remove Active Job boilerplate with `performs`
79
+
80
+ If you also bundle [`active_job-performs`](https://github.com/kaspth/active_job-performs) in your Gemfile like this:
81
+
82
+ ```ruby
83
+ gem "active_job-performs"
84
+ gem "active_record-associated_object"
85
+ ```
86
+
87
+ Every associated object now has access to the `performs` macro, so you can do this:
52
88
 
53
89
  ```ruby
54
90
  class Post::Publisher < ActiveRecord::AssociatedObject
@@ -64,7 +100,7 @@ class Post::Publisher < ActiveRecord::AssociatedObject
64
100
  end
65
101
  ```
66
102
 
67
- is equivalent to:
103
+ which is equivalent to this:
68
104
 
69
105
  ```ruby
70
106
  class Post::Publisher < ActiveRecord::AssociatedObject
@@ -97,6 +133,8 @@ class Post::Publisher < ActiveRecord::AssociatedObject
97
133
  end
98
134
  ```
99
135
 
136
+ See the `ActiveJob::Performs` README for more details.
137
+
100
138
  ### Passing callbacks onto the associated object
101
139
 
102
140
  `has_object` accepts a hash of callbacks to pass.
@@ -26,9 +26,5 @@ Gem::Specification.new do |spec|
26
26
  end
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- # Uncomment to register a new dependency of your gem
30
29
  spec.add_dependency "activerecord", ">= 6.1"
31
-
32
- # For more information and examples about making a new gem, check out our
33
- # guide at: https://bundler.io/guides/creating_gem.html
34
30
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  class AssociatedObject
5
- VERSION = "0.5.0"
5
+ VERSION = "0.5.1"
6
6
  end
7
7
  end
@@ -2,7 +2,7 @@ class ActiveRecord::AssociatedObject
2
2
  class << self
3
3
  def inherited(klass)
4
4
  record_klass = klass.module_parent
5
- record_name = klass.module_parent_name.underscore
5
+ record_name = klass.module_parent_name.demodulize.underscore
6
6
  attribute_name = klass.to_s.demodulize.underscore.to_sym
7
7
 
8
8
  unless record_klass.respond_to?(:descends_from_active_record?) && record_klass.descends_from_active_record?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-associated_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Timm Hansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-04 00:00:00.000000000 Z
11
+ date: 2023-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord