質問するログイン新規登録
Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

5210閲覧

rails db:seedについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/09/23 12:29

0

0

今、新しくseedデータを書き換えたところなのですが、それを適用する際にローカルだと

rails sb:migrate:reset rails db:seed

とやると思うのですが、このseedデータを本番にも適用したい場合、本番で

heroku run rails db:migrate:reset --app [アプリ名] heroku run rails db:seed --app [アプリ名]

とやると本番データも飛んでしまうと思うのですが、本番のデータを飛ばさずにseedを適用させるにはどのようにしたら良いのでしょうか?ご存知の方がいらっしゃいましたらよろしくお願いいたします。

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

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

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

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

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

CHERRY

2018/09/23 12:53

reset しなければいいのでは?
guest

回答2

0

ベストアンサー

それを適用する際にローカルだと「rails sb:migrate:reset」「rails db:seed」とやる

たしかに、標準のseed機能は貧弱なので、うっかりしていると同じレコードが複数入ってしまったりして煩雑となります。

seed-fuのようにライブラリを用意しておいて、何度seedを走らせても問題ないようにしておく、というのが便利かもしれません。

投稿2018/09/23 13:38

maisumakun

総合スコア146761

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

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

0

db:migrate:reset
するから、DB が削除されてしまいますね。

参考情報

...
db:reset のときの処理の流れは、
全テーブルを drop する
db/schema.rb を元にテーブルを再作成する
です。
...

seed は 通常は 単に現状の dB に record を登録していくだけでという書き方をします。
したがって、 reset せずに DB を追加するようにするには、それなりの工夫が必要です。

...
railsにある仕組みとして rake db:seed があります。
これは、何も考えずに使うと実行するたびに同じデータが登録されてしまいます。
そこで、代わりにseed-fuを利用するわけです。

seed-fuは、すでに存在しているが変更したいレコードだけ更新したり、ファイル単位で実行できたり、簡単に書けるようなシンタックスシュガーがあったりと便利です。
...

投稿2018/09/23 14:03

katoy

総合スコア22328

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問