konchanxxx / menta

MENTAのタスク管理用リポジトリ
0 stars 0 forks source link

運用中のherokuappのDBの操作 #41

Closed yoshimitsu41 closed 5 years ago

yoshimitsu41 commented 5 years ago

概要

herokuでアップされているrailsアプリがあります。 ローカル開発でhas_oneのアソシエーションを追加(Bモデルとする)。 Bモデルは、Aモデルで情報を追加すると自動的にBモデルの情報が追加されるようにしました。

仕組み的にAモデルを作成(create)かアップデート(update)をしないとBモデルの内容がつくられないようなものです。 herokuにあるDB(mysql)にもBモデルの内容を反映させたいのですが、どのようにすればいいのでしょうか? ちなみに運用しているDBにはAモデルのデータは約1000件あります。

実現したいこと

運用しているアプリに一括でDBに情報を入れたい。

困っていること

どのようにして一括でデータを入れるのかがわからない。

解決するために行ったこと

解決方法がわかりません。

問題となっている箇所の予想

seeds.rbを使う方法? heroku上を情報を変更しないまま一括でupdateさせる?

問題となっているアプリケーションのGitHub URL

以前にお送りしたmenta_bbqです。

konchanxxx commented 5 years ago

seeds.rb を使ってテストデータを流し込めば良いかなと思います:bow:

konchanxxx commented 5 years ago

ymlとかcsv,tsvあたりでテストデータのファイルを作成してそれを読み込んでbundle exec rails db:seed でcreateするとかすれば一気に反映することができます:bow:

yoshimitsu41 commented 5 years ago

csvでテストデータを作成してインポートしようとしたのですがエラーがでてインポートができません。 入れるカラムとして…。 price, bbq_status bbq_id bba_day です。 エラーは下記です。

$ bundle exec rails db:seed
rails aborted!
ArgumentError: '1' is not a valid bbq_status
/Users/yoshimitsu/rails_app/bbqnow/db/seeds.rb:12:in `block in <top (required)>'
/Users/yoshimitsu/rails_app/bbqnow/db/seeds.rb:11:in `<top (required)>'
/Users/yoshimitsu/rails_app/bbqnow/bin/rails:9:in `require'
/Users/yoshimitsu/rails_app/bbqnow/bin/rails:9:in `<top (required)>'
/Users/yoshimitsu/rails_app/bbqnow/bin/spring:15:in `require'
/Users/yoshimitsu/rails_app/bbqnow/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

seeds.rbは下記です。

require "csv"

CSV.foreach('db/sample.csv') do |row|
  MoneyHistory.create(:bbq_id => row[0], :bbq_day => row[1], :bbq_status => row[2], :price => row[3])
end

bbq_statusが問題だと思うのですが解決方法がわかりません。

試しにbbq_statusを省いてインポートしてみたのですが、うまく入りました。 問題箇所はございますでしょうか?

yoshimitsu41 commented 5 years ago

2019-02-26 21 02 19

yoshimitsu41 commented 5 years ago

すみません。 自己解決しました。 モデルで enum bbq_status:{申し込み:0 ,仮予約: 1,キャンセル: 2} を指定していたためインポートができなかったです。 失礼致しました。

konchanxxx commented 5 years ago

お、承知しました:bow: 解決されたようなのでcloseしておきます:bow: