noticed 1.2.10 → 1.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49ea4996a79f9bb4b9070ebe4801c0927e8dddd357c9a4f8a7812fe6609a9eb5
4
- data.tar.gz: aa5852613e11f73c2c263c961b49f1b54f7d77b414df59ed282703aa77757057
3
+ metadata.gz: f215fc7642db8db6a38ba3354c4d58ad1621c6d6af5c4ee479a519fdab1fae8d
4
+ data.tar.gz: 874dc986fa682f54eaee86f0e8e638049cb8d4f310a2e4d906e76ba11b5d7405
5
5
  SHA512:
6
- metadata.gz: 561f2719087ff38f45ad8230e1f5a7f7bc9adb6f192f39d1217c7b5df5acde0606103a015f5c87523b438baf5be6f79a07153b5b0ef5bb6037445fa2bd94a382
7
- data.tar.gz: 57c32c69975a7584f2e44dd41ef4c431fb8b33e629e92494a2988aabdde10feda18ce0224f08855b9118704f3ea7199a752732eb1306ef781ee51ea410b23a04
6
+ metadata.gz: '039b85fe5977ecf3d3353ba275f0913f03a325a3affc913a5edc05f07e5555b38deff9fd23b492d16fbdaa58c0c5e3cf281267288c3ff69697d07e0ff840ded8'
7
+ data.tar.gz: 7a49698a38596e35382fffc86d12857414f9f8ecdbc68f2c66fd24e124e6b893f62f442e736d004c5fad0403aa55eecc30a749843c6a61b5f0fc45d1b9da84c2
data/README.md CHANGED
@@ -401,6 +401,60 @@ Check if read / unread:
401
401
  @notification.unread?
402
402
  ```
403
403
 
404
+ #### Associating Notifications
405
+
406
+ Adding notification associations to your models makes querying and deleting notifications easy and is a pretty critical feature of most applications.
407
+
408
+ For example, in most cases, you'll want to delete notifications for records that are destroyed.
409
+
410
+ ##### JSON Columns
411
+
412
+ If you're using MySQL or Postgresql, the `params` column on the notifications table is in `json` or `jsonb` format and can be queried against directly.
413
+
414
+ For example, we can query the notifications and delete them on destroy like so:
415
+
416
+ ```ruby
417
+ class Post < ApplicationRecord
418
+ def notifications
419
+ # Exact match
420
+ @notifications ||= Notification.where(params: { post: self })
421
+
422
+ # Or Postgres syntax to query the post key in the JSON column
423
+ # @notifications ||= Notification.where("params->'post' = ?", Noticed::Coder.dump(self).to_json)
424
+ end
425
+
426
+ before_destroy :destroy_notifications
427
+
428
+ def destroy_notifications
429
+ notifications.destroy_all
430
+ end
431
+ end
432
+ ```
433
+
434
+ ##### Polymorphic Assocation
435
+
436
+ If your notification is only associated with one model or you're using a `text` column for your params column , then a polymorphic association is what you'll want to use.
437
+
438
+ 1. Add a polymorphic association to the Notification model. `rails g migration AddNotifiableToNotifications notifiable:belongs_to{polymorphic}`
439
+
440
+ 2. Add `has_many :notifications, as: :notifiable, dependent: :destroy` to each model
441
+
442
+ 3. Customize database `format: ` option to write the `notifiable` attribute(s) when saving the notification
443
+
444
+ ```ruby
445
+ class ExampleNotification < Noticed::Base
446
+ deliver_by :database, format: :format_for_database
447
+
448
+ def format_for_database
449
+ {
450
+ notifiable: params.delete(:post),
451
+ type: self.class.name,
452
+ params: params
453
+ }
454
+ end
455
+ end
456
+ ```
457
+
404
458
  ## 🙏 Contributing
405
459
 
406
460
  This project uses [Standard](https://github.com/testdouble/standard) for formatting Ruby code. Please make sure to run `standardrb` before submitting pull requests.
@@ -33,7 +33,7 @@ module Noticed
33
33
  end
34
34
 
35
35
  def params_column
36
- case ActiveRecord::Base.connection.instance_values["config"][:adapter]
36
+ case ActiveRecord::Base.configurations.configs_for(spec_name: "primary").config["adapter"]
37
37
  when "mysql"
38
38
  "params:json"
39
39
  when "postgresql"
@@ -1,3 +1,3 @@
1
1
  module Noticed
2
- VERSION = "1.2.10"
2
+ VERSION = "1.2.11"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noticed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.10
4
+ version: 1.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Oliver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-17 00:00:00.000000000 Z
11
+ date: 2020-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails