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

Enhance/#45 create seed #53

Merged
merged 7 commits into from
Jul 27, 2024
Merged

Enhance/#45 create seed #53

merged 7 commits into from
Jul 27, 2024

Conversation

taku-enginner
Copy link
Collaborator

対応するissue

対応内容

  • rails db:seedでダミーデータを作成できるようにseed.rbを修正しました。

@kuri0616 kuri0616 requested review from kuri0616 and kakeru-one June 29, 2024 05:47
@kuri0616
Copy link
Collaborator

kuri0616 commented Jun 29, 2024

IMO

今回、ランダムなダミーデータを生成するfakerというgemが既にインストールされているので
titleやcontentなどはそちらで生成するのも良いかなと思いました!
ランダムな文字を生成するLoremモジュール
IPアドレス、Emaiアドレスなどインターネット関連の値を生成するInternetモジュール等があるみたいですね!

1つの使用例としては以下のような形になります
seedファイルでfakerを読み込む

require 'faker'

ユニークなemailアドレスの生成

    email: Faker::Internet.unique.email

ランダムな文字列の生成

    title: Faker::Lorem.sentence(word_count: 5)

以下が公式になります!
https://github.com/faker-ruby/faker
READMEのGeneratorsというところに様々な値の生成方法詳しくのっていました!

Comment on lines 15 to 24
Memo.create!(
title: "title_#{n+1}",
content: "content_#{n+1}"
)

Comment.create!(
memo_id: n+1,
content: "content_#{n+1}"
)
end
Copy link
Collaborator

Choose a reason for hiding this comment

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

初PRお疲れ様です!僕も初レビュー頑張ります!笑

コメントはメモに紐づけることと、1つのメモに対して複数のコメントをつけたいと思いました。
以下のように今読み出しているmemoを変数に入れて、そのidをcommentのmemo_idに設定して作成すると良いと思いました!

    memo = Memo.create!(
      title: "title_#{n+1}",
      content: "content_#{n+1}"
    )
    10.times do |m|
      Comment.create!(
        memo_id: memo.id,
        content: "comment_#{m+1} for #{memo.title}"
      )

Copy link
Collaborator Author

@taku-enginner taku-enginner Jun 29, 2024

Choose a reason for hiding this comment

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

レビューいただきありがとうございます!

指摘いただいた仕様部分の修正を行いましたので、再度ご確認お願いいたします。
fakerについては、ご指摘いただいた部分に加えて、パスワードもランダム生成できるようでしたので、fakerを使用する形で修正しました!

Comment on lines 23 to 26
Comment.create!(
memo_id: memo.id,
content: "comment_#{m+1} for #{memo.title}"
)
Copy link
Collaborator

Choose a reason for hiding this comment

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

せっかくなので
CommentのcontentもFaker使用しても良いかなと思いました!

Comment on lines 18 to 21
memo = Memo.create!(
title: Faker::Lorem.sentence(word_count:5),
content: Faker::Lorem.sentence(word_count:5)
)
Copy link
Collaborator

Choose a reason for hiding this comment

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

titleとconentでは生成する文字数変更して実際に想定されるデータに近い形式にすると良いかなと思いました!

理由としてはフロントエンド側(フロントに限らずですが)でこれらのダミーデータを使用して画面の表示確認等をした際に、より本番に近い状態で検証できるからです!

今回のアプリでいうとSlackの「就職関連の共有や相談」チャンネルに投稿された内容が入るのかなと思うので、それぐらいの長さを想定してみてはどうでしょうか!
Fakerにはsentence以外に段落を入れて複数の文を生成するなどできるオプションもあるので確認してもらえたらと思います!


10.times do |n|
User.create!(
# email: "example_#{n+1}@example.com",
Copy link
Collaborator

Choose a reason for hiding this comment

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

こちらのコメントは不要かと思うので削除してもらえたらと思います!(何か意図あったらすみません)

@taku-enginner
Copy link
Collaborator Author

@rikuya98
お疲れ様です!
コメントいただいた点を修正して再度コミットしましたので、ご確認お願いいたします!

backend/test/fixtures/memos.yml Outdated Show resolved Hide resolved
backend/spec/factories/memos.rb Outdated Show resolved Hide resolved
backend/db/seeds.rb Outdated Show resolved Hide resolved
Copy link
Contributor

@kakeru-one kakeru-one left a comment

Choose a reason for hiding this comment

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

@taku-enginner
コメントしました!

backend/app/models/user.rb Outdated Show resolved Hide resolved
Comment on lines 11 to 27
10.times do |n|
User.create!(
email: Faker::Internet.unique.email,
password: Faker::Internet.password(min_length: 8)
)

memo = Memo.create!(
title: Faker::Lorem.sentence(word_count:10),
content: Faker::Lorem.paragraphs(number: 5)
)
10.times do |m|
Comment.create!(
memo_id: memo.id,
content: Faker::Lorem.sentence(word_count:5)
)
end
end
Copy link
Contributor

Choose a reason for hiding this comment

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

Nits/Idiomatic

rubyの場合はインデントは2 spaceなので、揃えていただきたいです〜 🙏


追加で、このコーディング規約をRubocopのルールに含めたいので、issueを切っていただきたいです!

(以下のような記述を.rubocop.ymlに追加すると強制できる。)

Layout/IndentationWidth:
  Width: 2

参考: https://docs.rubocop.org/rubocop/cops_layout.html#layoutindentationstyle

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

レビューありがとうございます!
2 space承知しました、修正します!

また、下段のissueを切る部分について、勉強不足で大変申し訳ないのですが内容がよくわからず、もう少しご説明いただくことは可能でしょうか、、、

backend/db/seeds.rb Outdated Show resolved Hide resolved
Copy link
Contributor

@kakeru-one kakeru-one left a comment

Choose a reason for hiding this comment

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

@taku-enginner
コメントしましたが、LGTMです!
(修正したらマージして良いです。)

backend/db/seeds.rb Outdated Show resolved Hide resolved
@kakeru-one kakeru-one merged commit 9771f68 into main Jul 27, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rails seedを使ってデータベースにダミーデータを作成できるようにする
3 participants