0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

seedで10人ユーザーを作って1人5つの記事を持たせるユーザーを作成する

Last updated at Posted at 2021-03-25

開発環境

環境
ruby:2.6.4
rails:6.0.3
userにはusersモデル、username,email,password,password_confirmation(確認用)を持たせ、
投稿にはarticlesモデル、title,textカラムを持たせています。
画像のアップロードはactivestorageを使用してavatarとしています。
gem 'Faker'を使用しています。

題名の通り早速作っていきます

アカウント=10人
1人のアカウント=5つのarticle(記事)
Faker::Name.nameはランダムに名前を作成してくれるfakerの機能、
Faker::Internet.emailはランダムにemailを作成してくれる機能、
Faker::Hacker.say_something_smartはランダムで文字を作成してくれる機能だと思います。
これに関してはあまり理解しておらずとりあえず文字を作成してくれたので使用しています
指定の文字を入れたい場合は
titel: "任意の文字"
text: "任意の文字"
とすれば良いと思います。
avatarには/assets/imagesに保存してある画像を登録するようにしてあります。

seed.rb
puts 'users ...'
10.times do
  user = User.create!(
    username: Faker::Name.name,
    email: Faker::Internet.email,
    password: 'foobar',
    password_confirmation: 'foobar',
  )
    user.avatar.attach(io: File.open('app/assets/images/cat.jpg'),filename: 'cat.jpg')
end

puts 'articles ...'
5.times do |n|
  User.all.each do |user|
    user.articles.create!(
      title: Faker::Hacker.say_something_smart,
      text: Faker::Hacker.say_something_smart
    )
  end
end
user.avatar.attach(io: File.open('app/assets/images/cat.jpg'),filename: 'cat.jpg')

上のavatarを登録するコードですが必ず()の外で書くようにしてください。
()の中で書くと誤字のエラーがでます。僕はこのエラーに5時間ほどハマりました。
それにactivestorageの場合あまり情報が少ないので本当にこの記述で正解なのかもわかりませんがとりあえず成功できているので良いと思います。
これで内容がよければ

rails db:seed

と打てば完了になります。

最後にいつでもログインできるアカウントを作る

migrate:resetしたときにいちいちアカウントを作り直すのもめんどくさいのでseedにいつでもログインできるようにメール認証もいらないアカウントを作ります。
人気俳優のお二人に参加してもらいます。
user1.skip_confirmation!
これはメール認証はスキップするコードみたいです。
しかしこのまま実行するとアカウント作成は成功したもののメール認識のスキップはできていませんでした。
そこで最後に
user1.save!と保存し、実行してみると見事成功していました。
今回は画像を保存するのは面倒だったのでコードは書きませんでしたが上と同じようにすることでできるかと思います。

seed.rb
user1 = User.create!(
  username: "横浜流星",
  email: "任意のアドレス",
  password: '123456',
  password_confirmation: '123456',
)
user1.skip_confirmation!
user1.save!

user2 = User.create!(
  username: "成田凌",
  email: "任意のアドレス",
  password: 'abcdef',
  password_confirmation: 'abcdef',
)
user2.skip_confirmation!
user2.save!

rails初学者が書いた記事なので間違いがあるかもしれません
もし間違いがある場合報告してもらえますと助かります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?