ruby-on-rails 无方法错误:通过使用Devise_token_auth rails gem为#User:0x000055ce01dcf0a8定义的方法'current_sign_in_at'不起作用

xtfmy6hx  于 2022-11-19  发布在  Ruby
关注(0)|答案(3)|浏览(115)

无方法错误:未定义#User:0x000055ce01dcf0a8的'current_sign_in_at'方法
我认为这是某种会话方法错误
我有一个angular6应用程序用于前端,Rails用于后端,所以对我来说最好的选择是选择devise_token_auth和ng_token_auth进行用户身份验证。
我安装了devise_token_auth gem,然后在终端中执行这行代码
“rails生成devise_token_auth:安装用户身份验证”
并且在迁移时出现错误,我通过添加
“扩展设备::型号”
到USER模型,然后迁移工作正常,然后我在后端创建了一个用户,并尝试使用postman调用sign_in,并显示错误“NoMethodError:#User:0x000055ce01dcf0a8”的未定义方法'current_sign_in_at'出现
我希望用户使用此gem或其他gem(如果存在)进行身份验证

epggiuax

epggiuax1#

我最近遇到了这个问题,结果发现我的迁移中没有可跟踪字段。有两种方法可以解决这个问题:
选项一。添加一个新迁移,将可跟踪字段添加到“用户

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

35g0bw71

35g0bw712#

@olivrg的建议是运行一个迁移,将可跟踪字段添加到User模型中,这对我很有效。
我的迁移过程如下所示:

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
ghhaqwfi

ghhaqwfi3#

@olivrg Rails 7不支持t.inet我必须使用t.string

## Trackable
t.integer  :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string   :current_sign_in_ip
t.string   :last_sign_in_ip

相关问题