🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1831閲覧

We're sorry, but something went wrong.

Tsuyoponpon

総合スコア33

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

1グッド

0クリップ

投稿2019/09/08 03:36

編集2019/09/08 05:39

前提・実現したいこと

本番環境でのみ発生している「We're sorry, but something went wrong.」というエラーは、ローカルでは問題なく動くのですが、本番環境の新規投稿時(Posts#new)のみで発生します。恐らく「gem 'carrierwave'」で作ったアップロード機能の「image」カラムを「picture」にrenameしたことが原因ではないかと思っていますが、解決策がわからず質問致しました。

本番環境(Heroku)のログ(エラー部分のみ抜粋)

(0.7ms) ROLLBACK Completed 500 Internal Server Error in 10ms (ActiveRecord: 2.6ms) ActiveModel::MissingAttributeError (can't write unknown attribute `picture`) app/controllers/posts_controller.rb:40:in `block in create' app/controllers/posts_controller.rb:39:in `create'

試したこと

「picture」というカラムが不明で書き込めないということでしたので、「picture」カラムをデフォルトの「image」カラムにrenameしたり、DBをdropしたりしましたが、解決できませんでした。

補足情報(FW/ツールのバージョンなど)

OS: Mac
Rails 5.1.6
ログイン機能を、gem devise,
画像、動画のアップローダーとして以下を使用しております。
gem 'carrierwave'
gem 'mini_magick'

renameしたmigrationfile

ruby

1class RenamePictureColumnToPosts < ActiveRecord::Migration[5.1] 2 def change 3 rename_column :posts, :picture, :image 4 end 5end 6

schema.rb

ruby

1 2ActiveRecord::Schema.define(version: 20190908051421) do 3 4 create_table "active_admin_comments", force: :cascade do |t| 5 t.string "namespace" 6 t.text "body" 7 t.string "resource_type" 8 t.integer "resource_id" 9 t.string "author_type" 10 t.integer "author_id" 11 t.datetime "created_at", null: false 12 t.datetime "updated_at", null: false 13 t.index ["author_type", "author_id"], name: "index_active_admin_comments_on_author_type_and_author_id" 14 t.index ["namespace"], name: "index_active_admin_comments_on_namespace" 15 t.index ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id" 16 end 17 18 create_table "admin_accounts", force: :cascade do |t| 19 t.string "email", default: "", null: false 20 t.string "encrypted_password", default: "", null: false 21 t.string "reset_password_token" 22 t.datetime "reset_password_sent_at" 23 t.datetime "remember_created_at" 24 t.datetime "created_at", null: false 25 t.datetime "updated_at", null: false 26 t.index ["email"], name: "index_admin_accounts_on_email", unique: true 27 t.index ["reset_password_token"], name: "index_admin_accounts_on_reset_password_token", unique: true 28 end 29 30 create_table "comments", force: :cascade do |t| 31 t.string "content" 32 t.integer "post_id" 33 t.datetime "created_at", null: false 34 t.datetime "updated_at", null: false 35 t.string "user_name" 36 t.integer "user_id" 37 t.index ["post_id"], name: "index_comments_on_post_id" 38 end 39 40 create_table "likes", force: :cascade do |t| 41 t.integer "user_id" 42 t.integer "post_id" 43 t.datetime "created_at", null: false 44 t.datetime "updated_at", null: false 45 t.index ["post_id"], name: "index_likes_on_post_id" 46 t.index ["user_id"], name: "index_likes_on_user_id" 47 end 48 49 create_table "posts", force: :cascade do |t| 50 t.string "title" 51 t.text "content" 52 t.datetime "created_at", null: false 53 t.datetime "updated_at", null: false 54 t.integer "user_id" 55 t.integer "likes_count" 56 t.string "image" 57 t.string "video" 58 end 59 60 create_table "relationships", force: :cascade do |t| 61 t.integer "follower_id" 62 t.integer "following_id" 63 t.datetime "created_at", null: false 64 t.datetime "updated_at", null: false 65 t.index ["follower_id", "following_id"], name: "index_relationships_on_follower_id_and_following_id", unique: true 66 t.index ["follower_id"], name: "index_relationships_on_follower_id" 67 t.index ["following_id"], name: "index_relationships_on_following_id" 68 end 69 70 create_table "users", force: :cascade do |t| 71 t.string "email", default: "", null: false 72 t.string "encrypted_password", default: "", null: false 73 t.string "reset_password_token" 74 t.datetime "reset_password_sent_at" 75 t.datetime "remember_created_at" 76 t.integer "sign_in_count", default: 0, null: false 77 t.datetime "current_sign_in_at" 78 t.datetime "last_sign_in_at" 79 t.string "current_sign_in_ip" 80 t.string "last_sign_in_ip" 81 t.datetime "created_at", null: false 82 t.datetime "updated_at", null: false 83 t.string "name" 84 t.integer "age" 85 t.date "birthday" 86 t.index ["email"], name: "index_users_on_email", unique: true 87 t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true 88 end 89 90end 91

yml

1#デプロイの前に、production環境を 2production: 3 <<: *default 4 database: db/production.sqlite3 5 6#↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 7 8production: 9 <<: *default 10 adapter: postgresql 11 encoding: unicode 12 pool: 5 13 14#に変更しました。 15

解決策をご存知の方、ぜひご教授をいただければと思います。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

本番環境でのみ発生している

特にご自身で書かれている部分について、本番環境とそれ以外の環境で比較してわかることはありませんか?

「picture」というカラムが不明で書き込めないということでしたので、「picture」カラムをデフォルトの「image」カラムにrenameしたり、DBをdropしたりしましたが、解決できませんでした。

renameをした際のマイグレーションファイルと、schema.rb を見せて下さい。

投稿2019/09/08 05:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Tsuyoponpon

2019/09/08 05:35

ご回答ありがとうございます。 質問の内容を追加させていただきました 環境の比較についてですが、デプロイ時にDBの環境をいじりました。 そこについても追記させていただきますので、ご確認をお願いいたします。
退会済みユーザー

退会済みユーザー

2019/09/08 05:59

ありがとうございます。 情報が揃った感じがします。 Heroku側で db:migrate を行いました(行い直しましたた)か?
Tsuyoponpon

2019/09/08 06:13 編集

「heroku run rake db:migrate」にて以前からmigrateしていたのですが、 ・PG::UndefinedTable: ERROR: relation "images" does not exist ・Caused by: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "images" does not exist.. の2つのエラーが発生しており、migrateが中止されている状態でした。もしかしたら、エラーでmigrateできていないのが原因かもですね。。
退会済みユーザー

退会済みユーザー

2019/09/08 06:19

はい、原因は端的に言うとそのとおりですね。 大本の原因としては、マイグレーションの順番が誤っているような気がします。 書いてくださった、リネームをしているマイグレーションは一番最後に実行されていますか? ファイル名の昇順に実行されてますので、ファイル名が重要です。
Tsuyoponpon

2019/09/08 06:31

リネームのマイグレーションは一番最初と一番最後に実行する両方を試しましたがエラー内容変わらずでした。 もう少し調べてみようと思います。
退会済みユーザー

退会済みユーザー

2019/09/08 07:37

今気づいたのですが、images というテーブルが存在しないのではないでしょうか(imageカラムに引っ張られて誤認してました)。 carrierwaveの初期化や設定の過程で作られるものではないでしょうか(すいません、carrierwaveはあまり詳しくないです)。
Tsuyoponpon

2019/09/08 11:05

返信が遅くなり申し訳ありません! なるほどですね!その視点気づいていませんでした!そのあたり少し色々試してみます!解決次第ベストアンサーにさせていただきます!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問