開発環境
環境
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に保存してある画像を登録するようにしてあります。
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!と保存し、実行してみると見事成功していました。
今回は画像を保存するのは面倒だったのでコードは書きませんでしたが上と同じようにすることでできるかと思います。
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初学者が書いた記事なので間違いがあるかもしれません
もし間違いがある場合報告してもらえますと助かります。