Skip to content

fix: The error occurred because the `Product#8

Draft
activerabbitapptest[bot] wants to merge 1 commit into
masterfrom
ai-fix/active-record-record-not-found-show
Draft

fix: The error occurred because the `Product#8
activerabbitapptest[bot] wants to merge 1 commit into
masterfrom
ai-fix/active-record-record-not-found-show

Conversation

@activerabbitapptest

Copy link
Copy Markdown

🐛 Bug Fix: ActiveRecord::RecordNotFound

Issue ID: #20
Controller: Main::ProductsController#show
Occurrences: 1 times
First seen: 2026-01-21 01:18
Last seen: 2026-01-21 01:18

🔍 Root Cause Analysis

The error occurred because the Product.find(123) call in the show action is attempting to find a product with a hardcoded ID of 123, which does not exist in the database. This is causing an ActiveRecord::RecordNotFound exception.

🔧 Suggested Fix

Change the code to use the id parameter from the request to find the product dynamically, rather than using a hardcoded ID.

Before

@product = Product.find(123)

After

@product = Product.find(params[:id])

📋 Error Details

Error Message:

Couldn't find Product with 'id'=123

Stack Trace (top frames):

["/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activerecord-8.0.4/lib/active_record/core.rb:280:in 'ActiveRecord::Core::ClassMethods#find'", "/Users/mac/Desktop/nikson-fishing-server/app/controllers/main/products_controller.rb:5:in 'Main::ProductsController#show'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal/basic_implicit_render.rb:8:in 'ActionController::BasicImplicitRender#send_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/abstract_controller/base.rb:215:in 'AbstractController::Base#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal/rendering.rb:193:in 'ActionController::Rendering#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/abstract_controller/callbacks.rb:261:in 'block in AbstractController::Callbacks#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:120:in 'block in ActiveSupport::Callbacks#run_callbacks'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/turbo-rails-2.0.20/lib/turbo-rails.rb:24:in 'Turbo.with_request_id'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/turbo-rails-2.0.20/app/controllers/concerns/turbo/request_id_tracking.rb:10:in 'Turbo::RequestIdTracking#turbo_tracking_request_id'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:129:in 'block in ActiveSupport::Callbacks#run_callbacks'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actiontext-8.0.4/lib/action_text/rendering.rb:25:in 'ActionText::Rendering::ClassMethods#with_renderer'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actiontext-8.0.4/lib/action_text/engine.rb:71:in 'block (4 levels) in <class:Engine>'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:129:in 'BasicObject#instance_exec'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:129:in 'block in ActiveSupport::Callbacks#run_callbacks'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:140:in 'ActiveSupport::Callbacks#run_callbacks'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/abstract_controller/callbacks.rb:260:in 'AbstractController::Callbacks#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal/rescue.rb:27:in 'ActionController::Rescue#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:76:in 'block in ActionController::Instrumentation#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:75:in 'ActionController::Instrumentation#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal/params_wrapper.rb:259:in 'ActionController::ParamsWrapper#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activerecord-8.0.4/lib/active_record/railties/controller_runtime.rb:39:in 'ActiveRecord::Railties::ControllerRuntime#process_action'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/abstract_controller/base.rb:152:in 'AbstractController::Base#process'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionview-8.0.4/lib/action_view/rendering.rb:40:in 'ActionView::Rendering#process'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal.rb:252:in 'ActionController::Metal#dispatch'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_controller/metal.rb:335:in 'ActionController::Metal.dispatch'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:67:in 'ActionDispatch::Routing::RouteSet::Dispatcher#dispatch'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:50:in 'ActionDispatch::Routing::RouteSet::Dispatcher#serve'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/journey/router.rb:53:in 'block in ActionDispatch::Journey::Router#serve'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/journey/router.rb:133:in 'block in ActionDispatch::Journey::Router#find_routes'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in 'Array#each'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in 'ActionDispatch::Journey::Router#find_routes'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/journey/router.rb:34:in 'ActionDispatch::Journey::Router#serve'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:908:in 'ActionDispatch::Routing::RouteSet#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/railties-8.0.4/lib/rails/engine/lazy_route_set.rb:60:in 'Rails::Engine::LazyRouteSet#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/omniauth-2.1.4/lib/omniauth/strategy.rb:202:in 'OmniAuth::Strategy#call!'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/omniauth-2.1.4/lib/omniauth/strategy.rb:169:in 'OmniAuth::Strategy#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/warden-1.2.9/lib/warden/manager.rb:36:in 'block in Warden::Manager#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/warden-1.2.9/lib/warden/manager.rb:34:in 'Kernel#catch'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/warden-1.2.9/lib/warden/manager.rb:34:in 'Warden::Manager#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/tempfile_reaper.rb:20:in 'Rack::TempfileReaper#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/etag.rb:29:in 'Rack::ETag#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/conditional_get.rb:31:in 'Rack::ConditionalGet#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/head.rb:15:in 'Rack::Head#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/http/permissions_policy.rb:38:in 'ActionDispatch::PermissionsPolicy::Middleware#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/http/content_security_policy.rb:38:in 'ActionDispatch::ContentSecurityPolicy::Middleware#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-session-2.1.1/lib/rack/session/abstract/id.rb:274:in 'Rack::Session::Abstract::Persisted#context'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-session-2.1.1/lib/rack/session/abstract/id.rb:268:in 'Rack::Session::Abstract::Persisted#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/cookies.rb:706:in 'ActionDispatch::Cookies#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activerecord-8.0.4/lib/active_record/migration.rb:670:in 'ActiveRecord::Migration::CheckPending#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:31:in 'block in ActionDispatch::Callbacks#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activesupport-8.0.4/lib/active_support/callbacks.rb:100:in 'ActiveSupport::Callbacks#run_callbacks'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:30:in 'ActionDispatch::Callbacks#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/executor.rb:16:in 'ActionDispatch::Executor#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in 'ActionDispatch::ActionableExceptions#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/activerabbit-ai-0.6.1/lib/active_rabbit/middleware/error_capture_middleware.rb:11:in 'ActiveRabbit::Middleware::ErrorCaptureMiddleware#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/debug_exceptions.rb:31:in 'ActionDispatch::DebugExceptions#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:132:in 'WebConsole::Middleware#call_app'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:28:in 'block in WebConsole::Middleware#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:17:in 'Kernel#catch'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/web-console-4.2.1/lib/web_console/middleware.rb:17:in 'WebConsole::Middleware#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/show_exceptions.rb:32:in 'ActionDispatch::ShowExceptions#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/railties-8.0.4/lib/rails/rack/logger.rb:41:in 'Rails::Rack::Logger#call_app'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/railties-8.0.4/lib/rails/rack/logger.rb:29:in 'Rails::Rack::Logger#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/remote_ip.rb:96:in 'ActionDispatch::RemoteIp#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/request_id.rb:34:in 'ActionDispatch::RequestId#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/method_override.rb:28:in 'Rack::MethodOverride#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/runtime.rb:24:in 'Rack::Runtime#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/server_timing.rb:61:in 'block in ActionDispatch::ServerTiming#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/server_timing.rb:26:in 'ActionDispatch::ServerTiming::Subscriber#collect_events'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/server_timing.rb:60:in 'ActionDispatch::ServerTiming#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rails_live_reload-0.5.0/lib/rails_live_reload/middleware/base.rb:19:in 'RailsLiveReload::Middleware::Base#call!'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rails_live_reload-0.5.0/lib/rails_live_reload/middleware/base.rb:9:in 'RailsLiveReload::Middleware::Base#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/executor.rb:16:in 'ActionDispatch::Executor#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/propshaft-1.3.1/lib/propshaft/server.rb:37:in 'Propshaft::Server#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/static.rb:27:in 'ActionDispatch::Static#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-3.2.4/lib/rack/sendfile.rb:131:in 'Rack::Sendfile#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/actionpack-8.0.4/lib/action_dispatch/middleware/host_authorization.rb:143:in 'ActionDispatch::HostAuthorization#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/rack-mini-profiler-4.0.1/lib/mini_profiler.rb:334:in 'Rack::MiniProfiler#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/railties-8.0.4/lib/rails/engine.rb:535:in 'Rails::Engine#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/configuration.rb:300:in 'Puma::Configuration::ConfigMiddleware#call'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/request.rb:101:in 'block in Puma::Request#handle_request'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/thread_pool.rb:355:in 'Puma::ThreadPool#with_force_shutdown'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/request.rb:100:in 'Puma::Request#handle_request'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/server.rb:503:in 'Puma::Server#process_client'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/server.rb:262:in 'block in Puma::Server#run'", "/Users/mac/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/puma-7.1.0/lib/puma/thread_pool.rb:182:in 'block in Puma::ThreadPool#spawn_thread'"]

Request Context:

  • Method: GET
  • Path: /products/1

🛡️ Prevention

  • Always use dynamic parameters from the request (e.g., params[:id]) to fetch records, rather than hardcoded values.
  • Implement error handling for ActiveRecord::RecordNotFound to provide a user-friendly error message or redirect if a record is not found.
  • Consider using find_by with a conditional check to handle cases where a record might not exist, avoiding exceptions.

✅ Checklist

  • Code fix implemented
  • Tests added/updated
  • Error scenario manually verified
  • No regressions introduced

Generated by ActiveRabbit AI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants