devise_token_auth: NoMethodError (undefined method `dta_find_by'

I am getting this error on /auth/sign_in route.

Do you have any idea why i get this one?

Thanks.

Tamas

  • Version: 1.1.0

Completed 500 Internal Server Error in 14ms (ActiveRecord: 0.0ms | Allocations: 4174)

NoMethodError (undefined method `dta_find_by’ for #Class:0x00007fd54e8eaf78):

activerecord (6.0.0.rc1) lib/active_record/dynamic_matchers.rb:22:in method_missing' devise_token_auth (1.1.0) app/controllers/devise_token_auth/concerns/resource_finder.rb:27:in find_resource’ devise_token_auth (1.1.0) app/controllers/devise_token_auth/sessions_controller.rb:21:in create' actionpack (6.0.0.rc1) lib/action_controller/metal/basic_implicit_render.rb:6:in send_action’ actionpack (6.0.0.rc1) lib/abstract_controller/base.rb:196:in process_action' actionpack (6.0.0.rc1) lib/action_controller/metal/rendering.rb:30:in process_action’ actionpack (6.0.0.rc1) lib/abstract_controller/callbacks.rb:42:in block in process_action' activesupport (6.0.0.rc1) lib/active_support/callbacks.rb:135:in run_callbacks’ actionpack (6.0.0.rc1) lib/abstract_controller/callbacks.rb:41:in process_action' actionpack (6.0.0.rc1) lib/action_controller/metal/rescue.rb:22:in process_action’ actionpack (6.0.0.rc1) lib/action_controller/metal/instrumentation.rb:33:in block in process_action' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:180:in block in instrument’ activesupport (6.0.0.rc1) lib/active_support/notifications/instrumenter.rb:24:in instrument' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:180:in instrument’ actionpack (6.0.0.rc1) lib/action_controller/metal/instrumentation.rb:32:in process_action' actionpack (6.0.0.rc1) lib/action_controller/metal/params_wrapper.rb:245:in process_action’ activerecord (6.0.0.rc1) lib/active_record/railties/controller_runtime.rb:27:in process_action' actionpack (6.0.0.rc1) lib/abstract_controller/base.rb:136:in process’ actionpack (6.0.0.rc1) lib/action_controller/metal.rb:191:in dispatch' actionpack (6.0.0.rc1) lib/action_controller/metal.rb:252:in dispatch’ actionpack (6.0.0.rc1) lib/action_dispatch/routing/route_set.rb:51:in dispatch' actionpack (6.0.0.rc1) lib/action_dispatch/routing/route_set.rb:33:in serve’ actionpack (6.0.0.rc1) lib/action_dispatch/routing/mapper.rb:18:in block in <class:Constraints>' actionpack (6.0.0.rc1) lib/action_dispatch/routing/mapper.rb:48:in serve’ actionpack (6.0.0.rc1) lib/action_dispatch/journey/router.rb:49:in block in serve' actionpack (6.0.0.rc1) lib/action_dispatch/journey/router.rb:32:in each’ actionpack (6.0.0.rc1) lib/action_dispatch/journey/router.rb:32:in serve' actionpack (6.0.0.rc1) lib/action_dispatch/routing/route_set.rb:837:in call’ warden (1.2.8) lib/warden/manager.rb:36:in block in call' warden (1.2.8) lib/warden/manager.rb:34:in catch’ warden (1.2.8) lib/warden/manager.rb:34:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ rack (2.0.7) lib/rack/etag.rb:25:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ rack (2.0.7) lib/rack/conditional_get.rb:38:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ rack (2.0.7) lib/rack/head.rb:12:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ activerecord (6.0.0.rc1) lib/active_record/migration.rb:567:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/callbacks.rb:27:in block in call' activesupport (6.0.0.rc1) lib/active_support/callbacks.rb:101:in run_callbacks’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/callbacks.rb:26:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/executor.rb:14:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/debug_exceptions.rb:32:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/show_exceptions.rb:33:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call’ activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call’ railties (6.0.0.rc1) lib/rails/rack/logger.rb:38:in call_app' railties (6.0.0.rc1) lib/rails/rack/logger.rb:26:in block in call’ activesupport (6.0.0.rc1) lib/active_support/tagged_logging.rb:80:in block in tagged' activesupport (6.0.0.rc1) lib/active_support/tagged_logging.rb:28:in tagged’ activesupport (6.0.0.rc1) lib/active_support/tagged_logging.rb:80:in tagged' railties (6.0.0.rc1) lib/rails/rack/logger.rb:26:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/remote_ip.rb:81:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/request_id.rb:27:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' rack (2.0.7) lib/rack/runtime.rb:22:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' activesupport (6.0.0.rc1) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/executor.rb:14:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/static.rb:126:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' rack (2.0.7) lib/rack/sendfile.rb:111:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' actionpack (6.0.0.rc1) lib/action_dispatch/middleware/host_authorization.rb:83:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' rack-cors (1.0.3) lib/rack/cors.rb:95:in call’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:57:in block in call' activesupport (6.0.0.rc1) lib/active_support/notifications.rb:182:in instrument’ actionpack (6.0.0.rc1) lib/action_dispatch/middleware/stack.rb:56:in call' railties (6.0.0.rc1) lib/rails/engine.rb:526:in call’ puma (3.12.1) lib/puma/configuration.rb:227:in call' puma (3.12.1) lib/puma/server.rb:660:in handle_request’ puma (3.12.1) lib/puma/server.rb:474:in process_client' puma (3.12.1) lib/puma/server.rb:334:in block in run’ puma (3.12.1) lib/puma/thread_pool.rb:135:in `block in spawn_thread’

  • Environmental Info: development with sqlite db

About this issue

  • Original URL
  • State: open
  • Created 5 years ago
  • Reactions: 1
  • Comments: 28 (9 by maintainers)

Most upvoted comments

So, please someone of @asanger or @Jellyfishboy provide here: Gemfile model/user.rb config/initializers/devise.rb config/initializers/devise_token_auth.rb

I will check your configuration.

To solve your issue right now, try this in your user.rb model:

include DeviseTokenAuth::Concerns::ActiveRecordSupport
include DeviseTokenAuth::Concerns::User

@pnghai in an active admin model (e.g app/admin/books.rb):

ActiveAdmin.register Book do

...

  controller do
    before_action :set_paper_trail_whodunnit

    # manually set the user for paper trail, instead of in ApplicationController
    def user_for_paper_trail
      current_admin_user&.id || 'Unknown Admin User'
    end

    def info_for_paper_trail
      { whodunnit_type: current_admin_user.class.name } if admin_user_signed_in?
    end
  end

...

I haven’t read through this full thread, but I had the exact same error when using devise_token_auth, paper_trail and active_admin together. Calling set_paper_trail_whodunnit within the ApplicationController was what caused the problem.

With ActiveAdmin, which uses regular devise under the hood, the admin_user.rb was an abstract class, whereas user.rb was not an abstract class. I was seeing the dta_find_by' for #Class:0x00007fd54e8eaf78 error on the admin user, which yielded a confusing stack trace because it was an abstract class.

It’s been a long time, but I believe the solution was to move set_paper_trail_whodunnit out of the ApplicationController, to the ApiController, which is where DeviseTokenAuth was actually being used. (I also moved it to the active admin views, which was where they were being used for admin users)

Here’s a snippet from my ApiController:

class ApiController < ActionController::API
  include DeviseTokenAuth::Concerns::SetUserByToken

  before_action :set_paper_trail_whodunnit

  protected

  def user_for_paper_trail
    current_user&.id || 'Unknown User'
  end

  def info_for_paper_trail
    { whodunnit_type: current_user&.class&.name } if user_signed_in?
  end
end

@Jellyfishboy What is custom in your CustomDeviseAuth? I think be better do something like this:

class User < ApplicationRecord
	include DeviseTokenAuth::Concerns::User
	include YouCustomMethodsHere

	# or put your custom methods right here.
end

Otherwise you never can follow the gem updates.

@Jellyfishboy Do not see in you User model:

include DeviseTokenAuth::Concerns::User

Do you include this concern somewhere else?

Thanks. You inherit ApplicationRecord for your User class.

class User < ApplicationRecord

And the gem expects ActiveRecord::Base

https://github.com/lynndylanhurley/devise_token_auth/blob/ce2cf2c180e6632dd054dd4b099e27f5a264de83/app/models/devise_token_auth/concerns/user.rb#L24-L26

I think here there is the issue for your application. I need time to check my guess.