前提・実現したいこと
railsにてユーザー登録をして質問をするWEBアプリを作成しました。
ローカル環境では動いていたのですが、herokuにデプロイしたところ下記のエラーが発生しました。
ご教示よろしくお願いいたします。
発生している問題・エラーメッセージ
ActionView::Template::Error (undefined method `privacy' for #<User:0x000056011f44f270>
'privacy'はusersテーブルで年齢を非公開にするか判別するためのカラム名です。
該当のソースコード
↓ビューファイル
html.erb
1 <% if user.privacy == 1 %> 2 <div class="age"> 3 ひみつ 4 </div> 5 <% else %>
試したこと
teratailの過去質問を見たところ、カラム名のundefined method は heroku restart で解決していたようなので試しましたが、解決せず。
次に、sequel proにprivacyカラムは存在していましたが、usersテーブルのマイグレーションファイルに "t.integer :privacy"の記述が存在していないことに気付きました。(おそらく以前にgithubでバージョンを戻っていたと思われます。)
そこで、usersテーブルのマイグレーションファイルに "t.integer :privacy"を記述し、テーブルを全て差し戻し、マイグレートしました。
その後、リモートgithubにpushし、ターミナルで heroku login → git push heroku master → heroku run rails db:migrate → heroku restart と実行しましたが、まだundefined methodのエラーは解決できませんでした。
補足情報(FW/ツールのバージョンなど)
↓書き直したマイグレーションファイル(t.integer :privacyを追加)
class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| ## Database authenticatable t.string :name, null: false t.integer :age, null: false t.integer :privacy t.string :sex, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" t.string :disease, null: false t.integer :history, null: false t.string :status, null: false t.text :sns t.text :word t.text :image ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at t.timestamps null: false end add_index :users, :name, unique: true add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。