Rails로 알림 기능 만들기(① 기본 기능 편)
한 일
Rails로 애플리케이션을 만드는 과제가 진행 중입니다.알림 기능을 만드는 작업이 있습니다.
처음에 하고 기억하면 응용이 효과적이기 때문에 어떻게 하는지 총괄해야 한다.
또한 실행 환경은 다음과 같다.
5.2.3
2.6.4
규격
규격은 아래와 같다.
user
추적 중 user
투고post
댓글이 있을 때user
의 투고 "좋아!"실행 시 데이터베이스 디자인
여기처럼.
다중 모드 관련을 사용하면
activity.subject
형식으로 Like
, Comment
및 Relationship
의 실례를 호출할 수 있다.데이터베이스 구조에 대한 상세한 정보는 이 글을 보십시오.
Rails의 다중 모드 연결 이해
또한
activities
표의 read
열을 이용하여 이미 읽은 관리를 하지만 이것은 본 보도가 아니라 다음 보도에서 소개합니다.종점
상기 표 디자인에 따르면'제작
activities
의 기록은 현재user
의 것만 집중하고 그것을 한눈에 보여주는 것'이 이번 목표다.알림 기능
Model
이번
user
추적되었을 때 = > relationships
의 기록이 작성되었을 때user
투고한 post
논평이 있을 때 = > comments
기록이 작성될 때user
의 투고 "좋아!"레코드를 작성할 때 = > likes
레코드가 작성될 때activities
의 기록도 동시에 작성할 수 있다.그것은 아래의 방법으로 실현되었다.모형 방법에 쓰인 내용을 세 가지로 요약하여 소개하다.
class Like < ApplicationRecord
# 中略
after_create_commit :create_activities
private
def create_activities
Activity.create!(subject: self, user: post.user, action_type: :liked_to_own_post)
end
end
class Relationship < ApplicationRecord
# 中略
after_create_commit :create_activities
private
def create_activities
Activity.create!(subject: self, user: follower, action_type: :followed_me)
end
end
lass Comment < ApplicationRecord
# 中略
after_create_commit :create_activities
private
def create_activities
Activity.create!(subject: self, user: post.user, action_type: :commented_to_own_post)
end
end
create_activities
의 방법은 Like
, Relationship
, Comment
의 실례를 만든 후에 불린다.사용after_create_commit
이지만 after_save
와 비슷한 리셋이다.그러나 데이터베이스 변경 사항을 제출하기 전에는 터치하지 않는다는 점은 다르다.자세한 내용은 참조 Rails Guide의 설명 를 참조하십시오.
또한
model
에도 다중모드적 관련을 정의하는 기술이 각각 첨부되어 있다.보세요앞에서 열거한 이 문장.지금 생각해 보니 각 모델
create_activities
은 개인적인 방법이다. 서로 다른 모델에서 동명의 방법을 사용했기 때문이다...(애초에 범본 방법의 사경이었는데, 지금은 다시 한 번 살펴보고 싶다...)
그러면 이렇게 기본적인 통지 기능이 실현된다.아직
view
없으니까 콘솔에서 실험하면...$ rails c
> user = User.first
> user.activities
#=> Activityのインスタンスたちが取得できる
상기 명령을 통해 user
와 관련된 알림 그룹을 얻을 수 있습니다.each
로 이걸 돌리면 view
으로 표시할 수 있다.추적) View에 알림 표시
보기를 계속합니다.
규격은 아래와 같다.세 가지 유형의 알림을 클릭하여 다음 페이지로 이동합니다.
some_helper.rb
module SomeHelper
def transition_path(activity)
case activity.action_type.to_sym
when :commented_to_own_post
post_path(activity.subject.post, anchor: "js-comment-#{activity.subject.id}")
when :liked_to_own_post
post_path(activity.subject.post)
when :followed_me
user_path(activity.subject.follower)
end
end
end
그런 다음 action_type
(알림 유형) 과 동일한 뷰를 생성합니다...(이곳은 샘플에 1례만 열거됨)
views/mypage/activities/_liked_to_own_post.html.slim
= link_to transition_path(activity) do
object
= link_to activity.subject.user.username, user_path(activity.subject.user)
| があなたの
object
=link_to '投稿', post_path(activity.subject.post)
| にいいねしました
.text-right
= l activity.created_at, format: :short
controller
에서current_user만 모았어요activity
app/controllers/mypage/activities_controller.rbclass Mypage::ActivitiesController < Mypage::BaseController
def index
@activities = current_user.activities.order(created_at: :desc)
end
end
view
이렇게 움직인다.views/mypage/activities/index.html.slim
- if @activities.present?
- @activities.each do |activity|
= render "#{activity.action_type}", activity: activity
- else
.text-center
| お知らせはありません
render
에서 호출된 내용은 동적 생성 가능위의 내용을 통해 페이지를 다음과 같이 표시할 수 있습니다.
이상, 간단하지만 사용자에게 통지하는 설정입니다.여기서부터 읽기 관리를 시작합니다.
Reference
이 문제에 관하여(Rails로 알림 기능 만들기(① 기본 기능 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanutanu/items/479cb14cfea77c7429bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)