iT邦幫忙

2023 iThome 鐵人賽

DAY 29
1
自我挑戰組

Rails 手工打造自己的部落格 系列 第 29

Rails 手工打造自己的部落格 29 站內通知

  • 分享至 

  • xImage
  •  

接下來我們可以玩一個有趣又有用的小功能,
這個看似很小卻可以把人搞死的功能,

目前我們要達到的功能就是,
有人留言回覆的話,我們就可以收到站內通知,
然後在點擊通知的同時,可以直接跳轉到觸發這個通知的來源地

那因為這個工程太繁複,
所以我們要使用一個套件,「noticed」

第一步先安裝

$ bundle add "noticed"

然後用他給的方法產生一個 noticed 的 model

rails generate noticed:model
generate 可以打縮寫 g

然後他就會自動幫你生成一個 model ,叫做 notifications
他給的欄位會長這樣

  create_table "notifications", force: :cascade do |t|
    t.string "recipient_type", null: false # 接收通知的 model
    t.bigint "recipient_id", null: false   # 接收通知的 id
    t.string "type", null: false # 觸發通知的 model
    t.jsonb "params" # 觸發通知的內容
    t.datetime "read_at" # 已讀
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["read_at"], name: "index_notifications_on_read_at"
    t.index ["recipient_type", "recipient_id"], name: "index_notifications_on_recipient"
  end

然後接著我們可以來做,需要觸發通知的物件,

rails generate noticed:notification CommentNotification

他就會在app目錄裡面創造一個 notifications 的資料夾
然後在資料夾裡面產生一個 comment_notification.rb

這裡可以依照自己需要的方式產生通知,還可以寄信,
但我們只需要站內的連結而不需要其他的功能
所以我們只會用的到這兩個方法

class CommentNotification < Noticed::Base
  def message
    t(".message")
  end
  
  def url
    post_path(params[:post])
  end
end

上一篇
Rails 手工打造自己的部落格 28 - 按讚
下一篇
Rails 手工打造自己的部落格 30 - 多國語言i18n
系列文
Rails 手工打造自己的部落格 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言