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

ユーザーIDを3文字以上に限定する(n > 1) #6443

Merged
merged 9 commits into from
Apr 30, 2023
Merged
9 changes: 7 additions & 2 deletions app/javascript/stylesheets/atoms/_a-form-help.sass
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
em
font-style: normal
font-weight: 600
&.is-danger
&.is-danger,
.is-danger
color: $danger
&.is-text-align-right
text-align: right
Expand All @@ -18,7 +19,9 @@
.form-item-block &
margin-top: .75em
p
+text-block(1em 1.6 0 .75em)
+text-block(1em 1.6)
&:not(:last-child)
margin-bottom: .75em
a
+hover-link-reversal
*:last-child
Expand All @@ -32,6 +35,8 @@
list-style-type: disc
list-style-position: outside
margin-left: 1.5em
&:not(:last-child)
margin-bottom: .75em
li
line-height: 1.6
&:not(:first-child)
Expand Down
2 changes: 2 additions & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ class User < ApplicationRecord

validates :login_name, exclusion: { in: RESERVED_LOGIN_NAMES, message: 'に使用できない文字列が含まれています' }

validates :login_name, length: { minimum: 3, message: 'は3文字以上にしてください。' }

validates :avatar, attached: false,
content_type: {
in: %w[image/png image/jpg image/jpeg image/gif image/heic image/heif],
Expand Down
2 changes: 2 additions & 0 deletions app/views/users/form/_kana_name.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@
.a-form-help
p
| 名前(ニックネーム)の読み方をカタカナで入力してください。
| ビデオチャットなど音声で名前を呼ばれる際は、
| こちらに登録した名前で呼ばれます。
19 changes: 14 additions & 5 deletions app/views/users/form/_login_name.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@
= f.label :login_name, class: 'a-form-label is-required'
= f.text_field :login_name, class: 'a-text-input', autocomplete: 'address-line3', placeholder: 'komagata'
.a-form-help
ul
li
| 文字数は
em.is-danger
| 3文字以上
| が必要です。
li
| 半角英数字と-(ハイフン)のみが使用できます。
li
| 先頭と最後にハイフンを使用することはできません。
li
| ハイフンを連続して使用することはできません。
p
| チャットやSNS(Twitter、GitHub、ブログ など)でユーザー名が異なると個人を認識するのが困難になります。
| 極力ユーザー名は統一するのがおすすめです。
| 半角英数字と-(ハイフン)のみが使用できます。
| 先頭と最後にハイフンを使用することはできません。
| ハイフンを連続して使用することはできません。
| チャットやSNS(Twitter、GitHub、ブログなど)でユーザー名が異なると個人を認識するのが困難になります。
| 極力ユーザー名は統一しましょう。
14 changes: 14 additions & 0 deletions db/data/20230412211754_change_user_id_more_3_characters.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# frozen_string_literal: true

class ChangeUserIdMore3Characters < ActiveRecord::Migration[6.1]
def up
User.where('LENGTH(login_name) < ?', 3).find_each do |user|
user.login_name = user.login_name.ljust(3, '0')
user.save!(validate: false)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[memo]
既存のユーザを更新するときには、(validate: false)をつけておく(すでにinvalidなユーザーデータがあるので)
参考→#5959 (comment)

end
end

def down
raise ActiveRecord::IrreversibleMigration
end
end
2 changes: 1 addition & 1 deletion db/data_schema.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# frozen_string_literal: true

DataMigrate::Data.define(version: 20_230_114_032_018)
DataMigrate::Data.define(version: 20_230_412_211_754)
4 changes: 3 additions & 1 deletion test/models/user_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ class UserTest < ActiveSupport::TestCase
assert user.save(context: :retire_reason_presence)
end

test 'is valid username' do
test 'login_name' do
user = users(:komagata)
user.login_name = 'abcdABCD1234'
assert user.valid?
Expand All @@ -196,6 +196,8 @@ class UserTest < ActiveSupport::TestCase
assert user.invalid?
user.login_name = '12345'
assert user.invalid?
user.login_name = 'xx'
assert user.invalid?
end
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここのテストケース、test 'is valid username'というブロックなのに不正なアカウント名に対するテストがずらっと書かれてるのが気になりました。(ついでに言うと、正確にはusernameじゃなくてlogin_nameに関するテストですよね)

これもこのPRではスコープ外と思いますしこのままでいいと思いますが、駒形さんに相談して起票するとよいのですかね?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確かに違和感のある名称ですね。
私としてはこのIssueで触れている箇所なので修正してしまってもいいかと思います!やってみます。

スコープ外の修正や改善案は基本的には駒形さん、町田さんに相談すると良いですね。
プルリクかIssueからメンション送るか、Discordの「#チーム開発」か「#バグ、誤字脱字報告、機能要望🙇」から相談する流れです。


test 'twitter_account' do
Expand Down