Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2024-01-11 08:59:25 #7166

Merged
merged 84 commits into from
Jan 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
7daa465
休会したら定期イベントの主催者がkomagataになるように修正
Takuya-Sakai91 Nov 4, 2023
e433e6a
退会した時の定期イベント主催者の割り当て
Takuya-Sakai91 Nov 4, 2023
77f2194
テストコードの追加と修正
Takuya-Sakai91 Nov 5, 2023
f192cf3
休会、退会フォームに自分が主催の定期イベントがある場合、任意で別の参加者に主催者引き継ぎを推奨するメッセージを表示
Takuya-Sakai91 Nov 7, 2023
42891f5
退会、休会時の定期イベント管理者へのメッセージの微調整
machida Nov 20, 2023
2590611
.card-list-itemの要素数を8個に修正
Takuya-Sakai91 Nov 21, 2023
ba40483
.card-list-itemの要素数を15個に修正
Takuya-Sakai91 Nov 21, 2023
815fd80
テストの修正
Takuya-Sakai91 Dec 5, 2023
f88d4ba
ユーザー退会時のイベント主催者割り当て処理をOrganizerクラスに移動
Takuya-Sakai91 Dec 7, 2023
126efa9
複数形に修正
Takuya-Sakai91 Dec 7, 2023
7bcc16f
テストコードを修正
Takuya-Sakai91 Dec 7, 2023
1a215f6
komagataを定数に置き換え
Takuya-Sakai91 Dec 14, 2023
9fe45e5
RegularEventモデルのテストケースを修正
Takuya-Sakai91 Dec 15, 2023
3bf7a0a
countの数を合わせた
Takuya-Sakai91 Dec 15, 2023
c196b2d
定数名の修正
Takuya-Sakai91 Dec 16, 2023
0b7d339
テストに含まれる定数名の修正
Takuya-Sakai91 Dec 16, 2023
e31e290
休会または退会したユーザーの定期イベントの主催者を管理者に自動で割り当てる処理を修正
Takuya-Sakai91 Dec 16, 2023
89f52d8
不要なテストを削除
Takuya-Sakai91 Dec 17, 2023
4e9f1e0
休会または退会したユーザーの定期イベントの主催者を管理者に自動で割り当てる処理を戻し、メソッド名を修正
Takuya-Sakai91 Dec 17, 2023
f1c6637
テスト戻し
Takuya-Sakai91 Dec 17, 2023
24ed64b
メソッド名を修正
Takuya-Sakai91 Dec 20, 2023
b8fae46
提出物の自分の担当タブの絞り込みの順番を逆にする
naokinaokiboo Dec 19, 2023
a3585e4
提出物の未完了タブの絞り込みの順番を逆にする
naokinaokiboo Dec 19, 2023
6c8e214
未ログインでユーザー個別ページにアクセスした時のページを作成
2525nicole Dec 4, 2023
5c2012f
Slim Lintの指摘事項を修正
2525nicole Dec 6, 2023
3d9b4a8
未ログインページのデザインの微調整、プロフィールページの文言微調整
machida Dec 15, 2023
cdcae5d
slim-lintの指摘事項を修正
2525nicole Dec 16, 2023
d911c95
変更箇所に沿ってテストを修正
2525nicole Dec 16, 2023
f9e4197
日報のWatch解除後に、コメントを削除編集しても再度Watch中にならないテストの追加
junohm410 Dec 15, 2023
c448b5f
読み込みの都合上、バグ修正前でもパスしてしまうアサーションを削除
junohm410 Dec 15, 2023
451ddf8
日報をWatch後、その日報がダッシュボードのWatch中一覧にあることをまず確認するよう修正
junohm410 Dec 24, 2023
d5c7000
提出物が0のときも、[未返信/全て]のナビゲーションを表示
niikz Dec 11, 2023
5d25c7b
提出物の未完了タブに表示している個数を休止中ユーザのものを引いた個数に変更
goruchanchan Dec 8, 2023
6f93790
休会ユーザ取得方法変更を scope を利用する方法に変更+休会ユーザプロダクトを除いた一覧取得対応
goruchanchan Dec 8, 2023
523da08
提出物の未完了タブに表示される提出物数は休会中ユーザが含まれないことを確認するテストの追加
goruchanchan Dec 9, 2023
2a54e7e
提出物の未完了一覧に表示する提出物が休会中ユーザのものであることを確認するテストを追加
goruchanchan Dec 9, 2023
289c2d8
休会中ユーザの抽出をスコープ定義したものを使用するように修正
goruchanchan Dec 9, 2023
be41996
lint 対応。不要な空行削除
goruchanchan Dec 9, 2023
3999ac5
不要な空行削除
goruchanchan Dec 10, 2023
6126bf2
テストケース名が休会中ユーザを示すべきなのに、非休会中ユーザとなってたので修正
goruchanchan Dec 10, 2023
49830c9
変数名が休会中ユーザのつもりが非休会中ユーザになってたのでここも修正
goruchanchan Dec 10, 2023
f6c0ddd
休会者絞り込みと、未確認・未返信の絞り込みを別に分ける
goruchanchan Dec 16, 2023
a951bfa
条件式を既存コード合わせた
goruchanchan Dec 16, 2023
b317c32
未完了数の期待値を説明変数に入れる
goruchanchan Dec 16, 2023
fafeec4
「全て」「未完了/未返信」タブに対してテストしていることがわかるようにコメント追加
goruchanchan Dec 16, 2023
d988386
モデルのテストはモデルのテストへ移動
goruchanchan Dec 16, 2023
dfd87bc
休会中ユーザの提出物を明示的に作成
goruchanchan Dec 16, 2023
3a63972
テストケース名を修正
goruchanchan Dec 16, 2023
9acd4a0
テストケース名に誤りがあったので修正
goruchanchan Dec 16, 2023
00d4487
テストケース名の内容が実態と異なっていたので修正
goruchanchan Dec 17, 2023
df9be8a
休会中ユーザ抽出スコープが正しく動作しているかを確認するテストを追加
goruchanchan Dec 17, 2023
a54cb1a
モデルのテスト名を他の命名方法と揃えた
goruchanchan Dec 20, 2023
827507b
テストケース名の文法ミスを修正
goruchanchan Dec 28, 2023
9e8c910
ユーザー一覧において休会中のユーザーに休会経過日数の表示を追加
2525nicole Dec 5, 2023
703732e
インデントとクラスを修正
2525nicole Dec 7, 2023
f9fbcbf
条件分岐とデザインを微調整
machida Dec 16, 2023
6b26070
メンター以外には隠すブロックに使うクラス付の位置の修正、余白微調整
machida Dec 16, 2023
c6f9e96
vueファイルのスタイルを修正
2525nicole Dec 17, 2023
0079e88
テストを追加
2525nicole Dec 17, 2023
9aed124
コースごとの参考書籍一覧ページを作成
2525nicole Dec 8, 2023
96acf03
fixtures変更に伴い、関連するテストコードを修正
2525nicole Dec 17, 2023
caa3edb
プラクティスで絞り込む機能を削除
2525nicole Dec 21, 2023
21763ba
fixturesの書籍数を増やした
2525nicole Dec 21, 2023
e6e1231
ファイル内で共通のfetchロジックをメソッド化した
2525nicole Dec 26, 2023
9503d0d
忘年会対象者のためのscopeで、休会者が含まれないように修正
junohm410 Dec 8, 2023
56522a1
修正したscopeと、一覧に休会/退会者のアドレスがないかのテストを追加
junohm410 Dec 8, 2023
aebb141
テスト名が冗長であったため、短縮する
junohm410 Dec 16, 2023
c487013
テスト名に用いるメソッドの表記形式を、クラスメソッドの表記形式に修正
junohm410 Dec 20, 2023
2e19ab5
追加したシステムテストのテスト名で使用する動詞の見直し
junohm410 Dec 27, 2023
fef8ad4
タグ別のユーザー一覧では退会と休会のユーザーが表示されないように統一した
2525nicole Nov 22, 2023
2ad1aba
テストを追加
2525nicole Nov 30, 2023
b3d4605
対象タグにおける表示のみを確実に確認できるようテストを変更した
2525nicole Dec 28, 2023
82c96f4
ドキュメントへのリンクを整理
komagata Jan 3, 2024
f32756e
通知メールフォーマット統一
Sasaco-JM Dec 2, 2023
be35cc1
テストコード修正
Sasaco-JM Dec 10, 2023
7f58d69
コメント時の通知メッセージを変更
Sasaco-JM Dec 23, 2023
816b572
テストケース修正漏れ対応
Sasaco-JM Dec 24, 2023
c461cb3
Bump puma from 6.4.0 to 6.4.2
dependabot[bot] Jan 8, 2024
71d4afd
slim-lintの指摘点を修正
komagata Jan 11, 2024
03a6511
Merge pull request #7185 from fjordllc/chore/fix-lint-suggestion
komagata Jan 11, 2024
af431ca
stringioを3.1.0にバージョンアップ
komagata Jan 11, 2024
da4424b
Merge pull request #7189 from fjordllc/chore/stringio3.1.0
komagata Jan 11, 2024
7f519f2
法人利用を研修利用に変更
komagata Jan 11, 2024
26e6332
Merge pull request #7190 from fjordllc/chore/test-for-training-page
komagata Jan 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ jobs:
- run:
name: Assets precompile
command: 'bundle exec rails assets:clean assets:precompile NODE_OPTIONS=--openssl-legacy-provider'
- run:
command: 'gem install stringio -v 3.1.0'
- run:
name: Test
command: |
Expand Down
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ ruby '3.1.4'
gem 'bootsnap', '>= 1.4.4', require: false
gem 'image_processing', '~> 1.12'
gem 'jbuilder', '~> 2.7'
gem 'puma', '~> 6.3'
gem 'puma', '~> 6.4'
gem 'rails', '~> 6.1.4.4'
gem 'webpacker', '~> 5.0'

Expand Down Expand Up @@ -64,7 +64,7 @@ gem 'rubyzip'
gem 'slim-rails'
gem 'sorcery', '~> 0.16.2'
gem 'sorcery-jwt'
gem 'stringio', '3.0.1'
gem 'stringio', '3.1.0'
gem 'stripe'
gem 'stripe-i18n', git: 'https://github.com/komagata/stripe-i18n', branch: 'update-depencency'
gem 'tzinfo', '~> 2.0', '>= 2.0.6'
Expand Down
10 changes: 5 additions & 5 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ GEM
net-protocol
netrc (0.11.0)
newspaper (0.2.0)
nio4r (2.5.9)
nio4r (2.7.0)
nokogiri (1.15.4-arm64-darwin)
racc (~> 1.4)
nokogiri (1.15.4-x86_64-darwin)
Expand Down Expand Up @@ -362,7 +362,7 @@ GEM
psych (5.1.1.1)
stringio
public_suffix (5.0.3)
puma (6.4.0)
puma (6.4.2)
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.7.3)
Expand Down Expand Up @@ -523,7 +523,7 @@ GEM
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
stringio (3.0.1)
stringio (3.1.0)
strings (0.2.1)
strings-ansi (~> 0.2)
unicode-display_width (>= 1.5, < 3.0)
Expand Down Expand Up @@ -641,7 +641,7 @@ DEPENDENCIES
pg (~> 1.4.6)
postmark-rails
pry-byebug
puma (~> 6.3)
puma (~> 6.4)
rack-cors
rack-dev-mark
rack-mini-profiler (~> 2.0)
Expand All @@ -668,7 +668,7 @@ DEPENDENCIES
sorcery-jwt
spring
spring-watcher-listen (~> 2.0.0)
stringio (= 3.0.1)
stringio (= 3.1.0)
stripe
stripe-i18n!
syntax_suggest
Expand Down
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,13 @@ rack-mini-profilerによりプロファイリングはデフォルトではOFF
$ PROFILE=1 rails server
```

## その他
## 環境構築

- [Develop環境でログインする方法](https://github.com/fjordllc/bootcamp/wiki/Develop%E7%92%B0%E5%A2%83%E3%81%A7%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
- [Develop環境でのメールの確認方法](https://github.com/fjordllc/bootcamp/wiki/Develop%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AE%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95)
- [nodeのバージョン切り替え](https://github.com/fjordllc/bootcamp/wiki/node%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88)
- [Rake Taskの実装方法](https://github.com/fjordllc/bootcamp/wiki/Rake-Task%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E6%B3%95)
- [Develop環境をDockerで動かす方法](doc/development_on_docker.md)
- [通知機能](https://github.com/fjordllc/bootcamp/wiki/%E9%80%9A%E7%9F%A5%E6%A9%9F%E8%83%BD)
- [gemを使った通知機能 · fjordllc/bootcamp Wiki](https://github.com/fjordllc/bootcamp/wiki/gem%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E9%80%9A%E7%9F%A5%E6%A9%9F%E8%83%BD)

## その他

- [Bootcamp Wiki](https://github.com/fjordllc/bootcamp/wiki)
7 changes: 4 additions & 3 deletions app/controllers/api/products/unchecked_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ def index
checker_id = params[:checker_id]
@products = case @target
when 'unchecked_all'
Product.unchecked
Product.unhibernated_user_products
.unchecked
.not_wip
.list
.ascending_by_date_of_publishing_and_id
.page(params[:page])
when 'unchecked_no_replied'
Product.unchecked_no_replied_products
.unchecked
Product.unhibernated_user_products
.unchecked_no_replied_products
.not_wip
.list
.page(params[:page])
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/api/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def target_users
if @target == 'followings'
current_user.followees_list(watch: @watch)
elsif @tag
User.tagged_with(@tag)
User.tagged_with(@tag).unhibernated.unretired
else
users_scope =
if @company
Expand Down
7 changes: 7 additions & 0 deletions app/controllers/courses/books_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

class Courses::BooksController < ApplicationController
def index
@course = Course.find(params[:course_id])
end
end
1 change: 1 addition & 0 deletions app/controllers/hibernation_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def create
destroy_subscription!
notify_to_chat
notify_to_mentors_and_admins
current_user.delete_and_assign_new_organizer
logout
redirect_to hibernation_path
else
Expand Down
1 change: 1 addition & 0 deletions app/controllers/retirement_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ def create
current_user.retired_on = Date.current
if current_user.save(context: :retirement)
user = current_user
current_user.delete_and_assign_new_organizer
Newspaper.publish(:retirement_create, user)
begin
UserMailer.retire(user).deliver_now
Expand Down
8 changes: 7 additions & 1 deletion app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

class UsersController < ApplicationController
skip_before_action :require_active_user_login, raise: false, only: %i[new create]
skip_before_action :require_active_user_login, raise: false, only: %i[new create show]
before_action :require_token, only: %i[new] if Rails.env.production?
before_action :set_user, only: %w[show]

Expand Down Expand Up @@ -40,6 +40,12 @@ def show
.includes(:practice)
.where(status: 3)
.order(updated_at: :desc)

if logged_in?
render :show
else
render :unauthorized_show, layout: 'not_logged_in'
end
end

def new
Expand Down
24 changes: 17 additions & 7 deletions app/javascript/components/Products.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,22 @@ export default function Products({
)
} else if (data.products.length === 0) {
return (
<div className="o-empty-message">
<div className="o-empty-message__icon">
<i className="fa-regular fa-smile"></i>
<>
{selectedTab === 'unchecked' || selectedTab === 'self_assigned' ? (
<nav className="pill-nav">
<ul className="pill-nav__items">
<FilterButtons selectedTab={selectedTab} />
</ul>
</nav>
) : null}

<div className="o-empty-message">
<div className="o-empty-message__icon">
<i className="fa-regular fa-smile"></i>
</div>
<p className="o-empty-message__text">{title}はありません</p>
</div>
<p className="o-empty-message__text">{title}はありません</p>
</div>
</>
)
} else if (isDashboard() && isNotProduct5daysElapsed()) {
return (
Expand Down Expand Up @@ -232,9 +242,9 @@ function ProductHeader({
const FilterButtons = ({ selectedTab }) => {
let targets
if (selectedTab === 'self_assigned') {
targets = ['self_assigned_no_replied', 'self_assigned_all']
targets = ['self_assigned_all', 'self_assigned_no_replied']
} else {
targets = ['unchecked_no_replied', 'unchecked_all']
targets = ['unchecked_all', 'unchecked_no_replied']
}

const filterButtonUrl = ({ selectedTab, target }) => {
Expand Down
101 changes: 101 additions & 0 deletions app/javascript/components/course-books.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<template lang="pug">
.page-body
.page-content.is-books
.container
.books
.empty(v-if='books === null')
.fa-solid.fa-spinner.fa-pulse
|
| ロード中
.books__items(v-else-if='books.length !== 0')
.row
book(
v-for='book in filteredBooks',
:key='book.id',
:book='book',
:isAdmin='isAdmin',
:isMentor='isMentor')
.o-empty-message(v-else)
.o-empty-message__icon
i.fa-regular.fa-sad-tear
p.o-empty-message__text
| 登録されている本はありません
</template>
<script>
import CSRF from 'csrf'
import Book from './book'

export default {
name: 'CourseBooks',
components: {
book: Book
},
props: {
isAdmin: { type: Boolean, required: true },
isMentor: { type: Boolean, required: true },
course: { type: Object, required: true }
},
data() {
return {
books: null,
practices: []
}
},
computed: {
filteredBooks() {
return this.books.filter((book) =>
book.practices.some((practice) =>
this.practices.some(
(coursePractice) => coursePractice.id === practice.id
)
)
)
}
},
created() {
this.getBooks()
this.getPractices()
},
methods: {
fetchGetData(url, callback) {
const uri = `/api/${url}`
fetch(uri, {
method: 'GET',
headers: {
'content-type': 'application/json; charset=utf-8',
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-Token': CSRF.getToken()
},
credentials: 'same-origin',
redirect: 'manual'
})
.then((res) => res.json())
.then(callback)
.catch((err) => console.warn(err))
},
getBooks() {
this.fetchGetData(`books.json`, (json) => {
const urlParams = new URLSearchParams(window.location.search)
const status = urlParams.get('status')
if (status === 'mustread') {
this.books = json.books.filter((book) => book.mustRead)
} else {
this.books = []
json.books.forEach((book) => this.books.push(book))
}
})
},
getPractices() {
this.fetchGetData(`courses/${this.course.id}/practices.json`, (json) => {
json.categories.forEach((category) => {
this.practices.push(
...category.practices.map(
(categoryPractice) => categoryPractice.practice
)
)
})
})
}
}
}
</script>
12 changes: 9 additions & 3 deletions app/javascript/components/user.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
.col-xxl-3.col-xl-4.col-lg-4.col-md-6.col-xs-12
.users-item
.users-item__inner.a-card
.users-item__inactive-message.is-only-mentor(
v-if='currentUser.mentor && user.student_or_trainee && !user.active')
| 1ヶ月以上ログインがありません
.users-item__inactive-message-container.is-only-mentor(
v-if='(currentUser.mentor || currentUser.admin) && user.student_or_trainee')
.users-item__inactive-message(v-if='user.roles.includes("retired")')
| 退会しました
.users-item__inactive-message(
v-else-if='user.roles.includes("hibernationed")')
| 休会中: {{ user.hibernated_at }}〜({{ user.hibernation_elapsed_days }}日経過)
.users-item__inactive-message(v-else-if='!user.active')
| 1ヶ月以上ログインがありません
header.users-item__header
.users-item__header-inner
.users-item__header-start
Expand Down
2 changes: 2 additions & 0 deletions app/javascript/packs/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ import SadReports from '../components/sad_reports.vue'
import UserProducts from '../components/user-products.vue'
import MentorPractices from '../components/mentor-practices.vue'
import ActionCompletedButton from '../components/action-completed-button.vue'
import CourseBooks from '../components/course-books.vue'

import '../stylesheets/application'

Expand All @@ -106,6 +107,7 @@ mounter.addComponent(SadReports)
mounter.addComponent(UserProducts)
mounter.addComponent(MentorPractices)
mounter.addComponent(ActionCompletedButton)
mounter.addComponent(CourseBooks)
mounter.mount()

// Support component names relative to this directory:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
height: 100%

.users-item__inactive-message
background-color: var(--background)
background-color: var(--disabled)
+text-block(.625rem 1.4, center)
padding: .25rem
+border-radius(top, .1875rem)
margin-bottom: -.25rem
margin: -1px -1px -.25rem

.users-item__inner
+media-breakpoint-up(md)
Expand All @@ -16,7 +16,7 @@

.users-item__header
+position(relative)
padding: 1rem
padding: .75rem 1rem
border-bottom: solid 1px var(--border-tint)

.users-item__header-inner
Expand Down
2 changes: 1 addition & 1 deletion app/mailers/activity_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ def watching_notification(args = {})
kind: Notification.kinds[:watched]
)
@action = @watchable.instance_of?(Question) ? '回答' : 'コメント'
subject = "[FBC] #{@watchable.user.login_name}さんの#{@watchable.notification_title}に#{@sender.login_name}さんが#{@action}しました。"
subject = "[FBC] #{@watchable.user.login_name}さんの#{@watchable.notification_title}に#{@sender.login_name}さんが#{@action}しました。"

message = mail to: @user.email, subject: subject
message.perform_deliveries = @user.mail_notification? && !@user.retired?
Expand Down
2 changes: 1 addition & 1 deletion app/models/cache.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def delete_unchecked_report_count

def unchecked_product_count
Rails.cache.fetch 'unchecked_product_count' do
Product.unchecked.not_wip.count
Product.unhibernated_user_products.unchecked.not_wip.count
end
end

Expand Down
2 changes: 1 addition & 1 deletion app/models/concerns/mentioner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def new_mention_users
def where_mention
case self
when Product
"#{user.login_name}さんの「#{practice[:title]}」の提出物"
"#{user.login_name}さんの提出物「#{practice[:title]}」"
when Report
"#{user.login_name}さんの日報「#{self[:title]}」"
when Comment
Expand Down
Loading