IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

notifications を使ってみる

はじめに

ここでは以下の記事を参考にして notifications を使ってみることにする。

 

git clone する

リポジトリをクローンする。

  • git clone git@github.com:matt-note/notifications_sample_before.git
  • cd notifications_sample_before

 

Ruby のバージョンを合わせる。

  • rbenv local 2.5.1

 

Gemfile で Ruby のバージョンを設定する。

f:id:matt-note:20190418131317p:plain

 

gem をインストールする。

  • bundle

 

 マイグレーションを実行する。

 

notifications の設定をする

 notifications をインストールする。

  • echo 'gem "notifications"' >> Gemfile
  • bundle

 

notifications のジェネレーターを実行する。

  • bin/rails g notifications:install

f:id:matt-note:20190419135500p:plain

-> これで初期設定できた。

 

ジェネレーターで作成されたマイグレーションファイルを DB に反映させる。

 

サーバーを起動して、サインインしてユーザーを作成しておく。

f:id:matt-note:20190419142743p:plain

 

コメントが来たら通知が来るようにしてみる

db/schema.rb で Notification モデルの属性を確認してみる。

f:id:matt-note:20190419155326p:plain

 

Notification モデルの属性はざっくりと以下のようになる。

user_id 通知の受信者
actor_id 通知の送信者(行為者)
notify_type 通知のモデル(コメントやフォローなど)
target ターゲットとなるモデル(コメントなど)
seconde_target ターゲットとなるモデル(target と違うモデル)

 

app/models/comment.rb を編集する。

 

f:id:matt-note:20190419163810p:plain

 

app/views/layouts/application.html.erb で通知一覧ページへのリンクを作成する。

f:id:matt-note:20190419164029p:plain

 

この時、Rails のパスには main_app をつける必要がある。

f:id:matt-note:20190419163428p:plain

  

通知を表示するページを作成する。
この時、部分テンプレートの名前は notify_type で指定したものにする必要がある。

  • mkdir app/views/notifications
  • touch app/views/notifications/_post.html.erb

f:id:matt-note:20190419164923p:plain

 

Post を投稿して、コメントをすると以下のようになる。

f:id:matt-note:20190419165009p:plain