LoginSignup
shunta9922
@shunta9922 (shimo shun)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

columnの追加と削除ができない

解決したいこと

columnの追加と削除ができないです

現在progateでtwitterのクローンを作成している初心者です。
formに入力したパスワードをハッシュ化させ、password_digest_columnに保存する工程でNameErrorが発生しました。
原因を調べると、usersテーブルのpassword_digest_columnがpasswor_columnのままでした。
migrationファイルにadd_columnとremove_columnを書いて、db:migrateを行ったのですが変化がありません。
この場合、もう一度マイグレーションファイル作り直すべきかまたは、schema.rbに直接書き込むべきでしょうか?ご教授よろしくお願いいたします。

発生している問題・エラー

NameError in UserController#login
undefined local variable or method `password_digest' for #<User:0x00000000094ea8c8> Did you mean? password

  def login
      @user=User.find_by(email: params[:email])
      if @user && @user.authenticate(params[:password])
        session[:user_id]=@user.id
        flash[:notice]="ログインしました"
        redirect_to("/movie/index")

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

Change_Users_Columns.rb
class ChangeUsersColumns < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :password_digest,:string
    remove_column :users,:password, :string
  end
end

schema.rb
  create_table "users", force: :cascade do |t|
    t.string "name"
    t.string "email"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "image_name"
    t.string "password"
  end
0

1Answer

migrationファイル名は、 Change_Users_Columns.rb ですか??

railsは、デフォルトでは、migrationファイル名のタイムスタンプをみて、
migrationを実行するかどうかを確認するので、タイムスタンプが入ってないと何も実行されないかと思います。

↓を参考に rails generate migration コマンドでファイルを作ってみてはいかがでしょうか??

1

Comments

  1. @shunta9922

    Questioner
    回答ありがとうございます
    一つ質問があるのですが、
    もう一度新しくChange_Users_Columns.rb を作成する際、db:rollbackを行って元のChange_Users_Columns.rb を削除したほうがいいでしょうか?
  2. このファイルを作って、db:migrateしたときに、変化がなかったのであれば、dbに対して何も処理は行われていないため、db:rollbackはする必要ないと思います。

    念のため、schema.rbをみてみてください。 `passwor_column` のままであれば、rollbackの必要はないです。

Your answer might help someone💌