質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

1234閲覧

rails 本番環境でのデモデータの作成

dfasdf

総合スコア6

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2021/04/16 02:19

編集2021/04/16 02:26

プログラミング初学者です。
rails 6を用いて、投稿機能がついたアプリケーションを開発しているのですが、本番環境でのデモデータ作成についてわからないことがあります。
モデルにはuser, micropost, relationship, prefecture, splitを使っており、micropostはbelongs_toで、user, prefecture, splitをidで関連づけております。
micropostを作成した際に、content, user_id, prefecture_id, split_idを必須にしているのですが、prefecture_idとsplit_idをランダムにデモデータとして登録するにはどのように記述したらよろしいのでしょうか?
prefectureとsplitに関してはseed_fuで登録してあります。
以下がコードになります。

db/seeds.rb User.create!(name: "Example User", email: "example@railstutorial.org", password: "foobar", password_confirmation: "foobar", admin: true, activated: true, activated_at: Time.zone.now) 99.times do |n| name = Faker::Name.name email = "example-#{n+1}@railstutorial.org" password = "password" User.create!(name: name, email: email, password: password, password_confirmation: password, activated: true, activated_at: Time.zone.now) end users = User.order(:created_at).take(6) 50.times do prefecture_id = split_id = content = Faker::Lorem.sentence(word_count: 5) users.each { |user| user.microposts.create!(prefecture_id: prefecture_id, split_id: split_id, content: content) } end users = User.all user = users.first following = users[2..50] followers = users[3..40] following.each { |followed| user.follow(followed) } followers.each { |follower| follower.follow(user) }
db/fixtures/prefecture.rb Prefecture.seed(:id, { :id => 0, :name => "北海道" }, { :id => 1, :name => "青森県" }, { :id => 2, :name => "岩手県" }, { :id => 3, :name => "宮城県" }, { :id => 4, :name => "秋田県" }, { :id => 5, :name => "山形県" }, { :id => 6, :name => "福島県" }, { :id => 7, :name => "茨城県" }, { :id => 8, :name => "栃木県" }, { :id => 9, :name => "群馬県" }, { :id => 10, :name => "埼玉県" }, { :id => 11, :name => "千葉県" }, { :id => 12, :name => "東京都" }, { :id => 13, :name => "神奈川県" }, { :id => 14, :name => "新潟県" }, { :id => 15, :name => "富山県" }, { :id => 16, :name => "石川県" }, { :id => 17, :name => "福井県" }, { :id => 18, :name => "山梨県" }, { :id => 19, :name => "長野県" }, { :id => 20, :name => "岐阜県" }, { :id => 21, :name => "静岡県" }, { :id => 22, :name => "愛知県" }, { :id => 23, :name => "三重県" }, { :id => 24, :name => "滋賀県" }, { :id => 25, :name => "京都府" }, { :id => 26, :name => "大阪府" }, { :id => 27, :name => "兵庫県" }, { :id => 28, :name => "奈良県" }, { :id => 29, :name => "和歌山県" }, { :id => 30, :name => "鳥取県" }, { :id => 31, :name => "島根県" }, { :id => 32, :name => "岡山県" }, { :id => 33, :name => "広島県" }, { :id => 34, :name => "山口県" }, { :id => 35, :name => "徳島県" }, { :id => 36, :name => "香川県" }, { :id => 37, :name => "愛媛県" }, { :id => 38, :name => "高知県" }, { :id => 39, :name => "福岡県" }, { :id => 40, :name => "佐賀県" }, { :id => 41, :name => "長崎県" }, { :id => 42, :name => "熊本県" }, { :id => 43, :name => "大分県" }, { :id => 44, :name => "宮崎県" }, { :id => 45, :name => "鹿児島県" }, { :id => 46, :name => "沖縄県" } )
db/fixtures/split.rb Split.seed(:id, { :id => 0, :name => "胸" }, { :id => 1, :name => "背中" }, { :id => 2, :name => "肩" }, { :id => 3, :name => "腕" }, { :id => 4, :name => "脚" }, { :id => 5, :name => "腹筋" } )

ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

見逃していたことがあったようです。デモプログラムはどのように作られたのですか?

投稿2021/04/19 08:39

Aurearei

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dfasdf

2021/04/19 09:21 編集

デモデータのことでしょうか? デモデータでしたら、fakerを用いて作成いたしました。 gemfileにfakerを追加した後、db/seeds.rbを編集してデモデータを作成いたしました。
guest

0

ベストアンサー

ループの前に全レコード取得しておいて、ループ内でsampleメソッドを使うことでランダムに1件選択出来ると思います。

ruby

1# ループの前に全レコード取得 2prefectures = Prefecture.all 3splits = Splite.all 4 550.times do 6 # ランダムに1件選択 7 prefecture = prefectures.sample 8 split = splits.sample 9 10 prefecture_id = prefecture.id 11 split_id = split.id 12 13 puts "prefecture_id=#{prefecture_id}" 14 puts "split_id =#{split_id }" 15end

投稿2021/04/16 02:38

mingos

総合スコア4207

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dfasdf

2021/04/16 03:35 編集

回答ありがとうございます。 編集後、 heroku pg:reset DATABASE heroku run rails db:migrate heroku run rails db:seed_fu heroku run rails db:seed をして解決いたしました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問