首页 > 解决方案 > devise_token_auth 如何访问 user.created_at

问题描述

我在我的 Rails 5 api 上使用 devise_token_auth

目前,当我向一切顺利提出POST请求时,我得到的数据如下所示:/auth/sign_in

"data": {
    "id": 3,
    "email": "me@user.com",
    "name": null,
    "nickname": null,
    "bio": null,
    "description": null,
    "url": null,
    "image": {
        "url": null
    },
    "provider": "email",
    "uid": "me@user.com",
    "allow_password_change": false,
    "role": null
}

但是,我还希望能够访问已启用的时间戳属性(created_at、updated_at):

ActiveRecord::Schema.define(version: 2018_10_18_201621) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "users", force: :cascade do |t|
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false

有任何想法吗?提前致谢

标签: ruby-on-railsdevisedevise-token-auth

解决方案


devise_token_auth检查这个关于在它的 github repo 上覆盖 gem 上的渲染方法的问题讨论: https ://github.com/lynndylanhurley/devise_token_auth/issues/597 。

在您的模型上尝试以下代码,User以便您可以使用自定义序列化程序而不是默认序列化程序:

def token_validation_response                                                                                                                                         
  UserSerializer.root = false
  UserSerializer.new(self).as_json
end

推荐阅读