接下來我們可以玩一個有趣又有用的小功能,
這個看似很小卻可以把人搞死的功能,
目前我們要達到的功能就是,
有人留言回覆的話,我們就可以收到站內通知,
然後在點擊通知的同時,可以直接跳轉到觸發這個通知的來源地
那因為這個工程太繁複,
所以我們要使用一個套件,「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