NoMethodError: undefined method `current_sign_in_at' for #User:0x000055ce01dcf0a8
I think it is a session method error of some sort
I have an angular6 app for frontend and rails for backend, so the best option for me was to opt for devise_token_auth and ng_token_auth for user authentication.
I installed devise_token_auth gem followed by executing this line of code in terminal
"rails generate devise_token_auth:install User auth"
and on migration there was an error, I solved the issue by adding
"extend Devise::Models"
to the USER model and then migration had worked, then I created a user in the backend and tried to call sign_in using postman and the error "NoMethodError: undefined method `current_sign_in_at' for #User:0x000055ce01dcf0a8" came
I want the user to get authenticated using this gem or some other gem if they exist
I had this issue recently and it turns out I didn't have the trackable fields in my migration. There are two ways to fix this:
Option one. Add a new migration that adds the trackable fields to User
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.inet :current_sign_in_ip
t.inet :last_sign_in_ip
Run rake db:migrate
The second option: run a down migration
Start with this command - add your migration version number
rake db:migrate:down VERSION=xxxxxxxxxxxxxx
You should then be able to add the trackable fields to the migration file and then run
rake db:migrate up VERSION=xxxxxxxxxxxxxx
Run rake db:migrate
@olivrg's suggestion to run a migration to add the trackable fields to the User
model worked for me.
My migration looked like this:
class AddTrackableFieldsToUser < ActiveRecord::Migration[6.0]
def change
change_table :users do |t|
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.inet :current_sign_in_ip
t.inet :last_sign_in_ip
end
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With