active_record-associated_object 0.5.0 → 0.5.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: 7f8b62e508398ddb7a6822eab1ddd89f744bf4f795f6a824c0f1af9501878d2a
4
- data.tar.gz: 22e627a8a19fd92f4ea188252550fda880df8da7d847bb9bb47e4e15afd84ddf
3
+ metadata.gz: 3b973496c3658defdee08fb40292bad58fadbc743a732cface722c40f8b8152c
4
+ data.tar.gz: c6a3758599c0f5ce22470c18c23c958ebf05827a7f52ae0d07507cbd4b8b6346
5
5
  SHA512:
6
- metadata.gz: 9e0267e09ed36917900870a7c76f515fcc7328730e60c11e525cb9610622edc03cd471e900bbec67e7a6a0f98933cde466e9804d77ab8681976e06bdcd3e6810
7
- data.tar.gz: 3bec7180bb66a6219791a65ca76a51a384594333c3d2babe5dd8f13e2b61d8eb9be9f6a3b0a910ea2e56b972e82dc010c46a22b52841f6ba860615bebe9bd4f0
6
+ metadata.gz: 57db29d169ee310087c539e1eb64ccce3bdeb6a98bdb7532723db4f90656140d521c9925efb3aa17782cd84b3e1906dfaaf0cd6dd72d69ad54e90b159a423547
7
+ data.tar.gz: dca66954be7f3e84ea76010e7714366532c506eb3ab02c1174bd47122ecce0af5223656ee11ed425d962d86b5a443ce69b95a187d40318ff555f497103df88ff
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.2)
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
@@ -3,17 +3,17 @@ class ActiveRecord::AssociatedObject::Railtie < Rails::Railtie
3
3
  config.after_initialize do
4
4
  ActiveRecord::AssociatedObject.include Kredis::Attributes if defined?(Kredis)
5
5
  ActiveRecord::AssociatedObject.include GlobalID::Identification if defined?(GlobalID)
6
-
7
- ActiveSupport.on_load :active_job do
8
- require "active_job/performs"
9
- ActiveRecord::AssociatedObject.extend ActiveJob::Performs
10
- rescue LoadError
11
- # We haven't bundled active_job-performs, so we're continuing without it.
12
- end
13
6
  end
14
7
  end
15
8
 
16
9
  initializer "object_association.setup" do
10
+ ActiveSupport.on_load :active_job do
11
+ require "active_job/performs"
12
+ ActiveRecord::AssociatedObject.extend ActiveJob::Performs
13
+ rescue LoadError
14
+ # We haven't bundled active_job-performs, so we're continuing without it.
15
+ end
16
+
17
17
  ActiveSupport.on_load :active_record do
18
18
  require "active_record/associated_object/object_association"
19
19
  extend ActiveRecord::AssociatedObject::ObjectAssociation
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  class AssociatedObject
5
- VERSION = "0.5.0"
5
+ VERSION = "0.5.2"
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.2
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-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord