NoMethodError:使用Devise_token_auth rails gem为#User:0x000055ce01dcf0a8定义的方法“ current_sign_in_at”无法正常工作

时间:2019-04-17 21:00:58

标签: ruby-on-rails ruby devise-token-auth

NoMethodError:#User:0x000055ce01dcf0a8的未定义方法`current_sign_in_at'

我认为这是某种会话方法错误

我有一个用于前端的angular6应用程序和用于后端的rails,所以对我来说最好的选择是选择devise_token_auth和ng_token_auth进行用户身份验证。

我安装了devise_token_auth gem,然后在终端中执行了这一行代码

  

“ rails生成devise_token_auth:安装用户身份验证”

在迁移时出现错误,我通过添加

解决了该问题
  

“扩展Devise :: Models”

到USER模型,然后进行迁移,然后我在后端创建了一个用户,并尝试使用邮递员调用sign_in,并且出现错误“ NoMethodError:#User:0x000055ce01dcf0a8的未定义方法“ current_sign_in_at””

我希望用户使用此gem或其他gem(如果存在)进行身份验证

2 个答案:

答案 0 :(得分:0)

我最近遇到了这个问题,事实证明我的迁移中没有可跟踪的字段。有两种方法可以解决此问题:

选项一。添加一个新迁移,将可跟踪字段添加到用户

## 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

运行rake db:migrate

第二个选项:运行向下迁移

从此命令开始-添加您的迁移版本号

rake db:migrate:down VERSION=xxxxxxxxxxxxxx

然后您应该能够将可跟踪字段添加到迁移文件中,然后运行

rake db:migrate up VERSION=xxxxxxxxxxxxxx

运行rake db:migrate

答案 1 :(得分:0)

@olivrg's suggestion to run a migration to add the trackable fields to the User model为我工作。

我的迁移看起来像这样:

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