Setting up a new project with Rails and forest_liana

Hello,

I started trying to set up Forest Admin over the weekend.

I first set it up using forest_liana and setup was fine, except for some UUID errors I came across.

I then read some old information and thought that going down the forest_liana route wasn’t advised, so I went down the Postgres/NodeJS route.

You can see my journey charted in the following forum posts:

Now, I’ve tried to revert back to the forest_liana route, and set up is fine, but when I start rails server and attempt to view the default dashboard, I see this:

Nothing I’ve tried works, including logging out, or deleting all of my cookies.

In my rails server logs, I’m seeing:

Any way I can get past this?

Thank you so much!

Hi @Nadia !
We just released a new version of the forest_liana !
You may need to follow the Upgrade to v6 - Documentation to make it work !
Don’t hesitate if you need help !

Hi @anon94532230,

Thank you so much for the prompt reponse!

I added in the new forest_application_variable needed like so:

In my config/initializers/forest_liana.rb:

And in my config/secrets.yml for development, I have:

And now the error is as follows:

I didn’t have any CORS config set up beforehand, and when I copy and paste in the config in the docs, the error remains the same, so I’ve taken it out for now.

Thank you,

Nadia

Hello @Nadia!

We just rolled back the forest_liana@6.0.0 and working on solving the issues.

In the meantime, you can use the forest_liana@5.4.4 version that should work for you.

Sorry for the inconvenience, we will release the new version as soon as we solve the issues.

Please let me know if you need any help :slightly_smiling_face:

Hi @Nadia !
I found the issue :slight_smile:
You need to run rails dev:cache on your project. the new version requires the rails cache to be activated to allow authentication.

Oh cool, thanks! I’ll try that later.

So, should I stay on V6 for now then, @anon94532230, @anon90145840?

Thank you both very much.

Okay, so rails dev:cache got it working and now I’m back with the same errors that made me divert to the Postgres/NodeJS route in the first place.

I have ActiveStorage and ActionText set up to work with UUIDs. When I try and access the ActiveStorage::Blobs table, I see the following:


And when I try and access the Review table, which has attached Rich Text, I see the same error screen with this in the logs:

What can I do to get this to work?

Thank you very much!

Hi again !
Could you share the entire error logs please ?
This lloks like an error in you model definitions :thinking:

Hi @anon94532230!

I’d be surprised if it’s an error in my model definitions when my app has been working for over a year now in production and Rails Admin works fine, but let’s see!

Here’s the full stack trace including the query that was trying to run:

  SQL (3.2ms)  SELECT "active_storage_blobs"."id" AS t0_r0, "active_storage_blobs"."key" AS t0_r1, "active_storage_blobs"."filename" AS t0_r2, "active_storage_blobs"."content_type" AS t0_r3, "active_storage_blobs"."metadata" AS t0_r4, "active_storage_blobs"."byte_size" AS t0_r5, "active_storage_blobs"."checksum" AS t0_r6, "active_storage_blobs"."created_at" AS t0_r7, "active_storage_attachments"."id" AS t1_r0, "active_storage_attachments"."name" AS t1_r1, "active_storage_attachments"."record_type" AS t1_r2, "active_storage_attachments"."record_id_int" AS t1_r3, "active_storage_attachments"."blob_id" AS t1_r4, "active_storage_attachments"."created_at" AS t1_r5, "active_storage_attachments"."record_id" AS t1_r6, "preview_image_blobs_active_storage_blobs"."id" AS t2_r0, "preview_image_blobs_active_storage_blobs"."key" AS t2_r1, "preview_image_blobs_active_storage_blobs"."filename" AS t2_r2, "preview_image_blobs_active_storage_blobs"."content_type" AS t2_r3, "preview_image_blobs_active_storage_blobs"."metadata" AS t2_r4, "preview_image_blobs_active_storage_blobs"."byte_size" AS t2_r5, "preview_image_blobs_active_storage_blobs"."checksum" AS t2_r6, "preview_image_blobs_active_storage_blobs"."created_at" AS t2_r7 FROM "active_storage_blobs" LEFT OUTER JOIN "active_storage_attachments" ON "active_storage_attachments"."record_type" = 'ActiveStorage::Blob' AND "active_storage_attachments"."name" = 'preview_image' AND "active_storage_attachments"."record_id" = "active_storage_blobs"."id" LEFT OUTER JOIN "active_storage_attachments" "preview_image_attachments_active_storage_blobs_join" ON "preview_image_attachments_active_storage_blobs_join"."record_type" = 'ActiveStorage::Blob' AND "preview_image_attachments_active_storage_blobs_join"."name" = 'preview_image' AND "preview_image_attachments_active_storage_blobs_join"."record_id" = "active_storage_blobs"."id" LEFT OUTER JOIN "active_storage_blobs" "preview_image_blobs_active_storage_blobs" ON "preview_image_blobs_active_storage_blobs"."id" = "preview_image_attachments_active_storage_blobs_join"."blob_id" ORDER BY "active_storage_blobs"."id" DESC LIMIT 15 OFFSET 0
[2021-02-25 09:49:21] Forest 🌳🌳🌳  Records Index error: PG::UndefinedFunction: ERROR:  operator does not exist: uuid = bigint
LINE 1: ...age' AND "active_storage_attachments"."record_id" = "active_...
                                                             ^
HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `exec_params'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql_adapter.rb:674:in `block in exec_no_cache'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:721:in `block in log'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:712:in `log'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql_adapter.rb:673:in `exec_no_cache'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql_adapter.rb:654:in `execute_and_clear'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `exec_query'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:489:in `select'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:70:in `select_all'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:105:in `block in select_all'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:122:in `block in cache_sql'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:113:in `cache_sql'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:105:in `select_all'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:816:in `block (2 levels) in exec_queries'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation/finder_methods.rb:396:in `apply_join_dependency'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:811:in `block in exec_queries'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:839:in `skip_query_cache_if_necessary'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:808:in `exec_queries'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:626:in `load'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:250:in `records'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/relation.rb:245:in `to_ary'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/services/forest_liana/resources_getter.rb:82:in `records'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/resources_controller.rb:224:in `render_jsonapi'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/resources_controller.rb:36:in `block (2 levels) in index'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/resources_controller.rb:35:in `index'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/base.rb:195:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/rendering.rb:30:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/callbacks.rb:135:in `run_callbacks'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/callbacks.rb:41:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/rescue.rb:22:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications.rb:180:in `block in instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications.rb:180:in `instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/searchkick-4.4.2/lib/searchkick/logging.rb:212:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/base.rb:136:in `process'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionview-6.0.3.5/lib/action_view/rendering.rb:39:in `process'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal.rb:190:in `dispatch'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal.rb:238:in `block in action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/router.rb:40:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:48:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:49:in `block in serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `each'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/route_set.rb:834:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-cors-1.1.1/lib/rack/cors.rb:100:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/engine.rb:527:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/railtie.rb:190:in `public_send'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/railtie.rb:190:in `method_missing'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:48:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:49:in `block in serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `each'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/route_set.rb:834:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-pjax-1.1.0/lib/rack/pjax.rb:12:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/serviceworker-rails-0.6.0/lib/serviceworker/middleware.rb:35:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-attack-6.5.0/lib/rack/attack.rb:99:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-attack-6.5.0/lib/rack/attack.rb:113:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/remotipart-1.4.4/lib/remotipart/middleware.rb:32:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/warden-1.2.9/lib/warden/manager.rb:36:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/warden-1.2.9/lib/warden/manager.rb:34:in `catch'
	/Users/nadidami/.gem/ruby/2.6.6/gems/warden-1.2.9/lib/warden/manager.rb:34:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/etag.rb:27:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/cookies.rb:648:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:567:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/callbacks.rb:101:in `run_callbacks'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/executor.rb:14:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:132:in `call_app'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:28:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:17:in `catch'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:17:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/rack/logger.rb:37:in `call_app'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/rack/logger.rb:26:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/tagged_logging.rb:80:in `block in tagged'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/tagged_logging.rb:28:in `tagged'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/tagged_logging.rb:80:in `tagged'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/rack/logger.rb:26:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/sprockets-rails-3.2.2/lib/sprockets/rails/quiet_assets.rb:13:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/request_store-1.4.1/lib/request_store/middleware.rb:19:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/request_id.rb:27:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/method_override.rb:24:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/runtime.rb:22:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/executor.rb:14:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-livereload-0.3.17/lib/rack/livereload.rb:23:in `_call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-livereload-0.3.17/lib/rack/livereload.rb:14:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/static.rb:126:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/host_authorization.rb:82:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/webpacker-5.2.1/lib/webpacker/dev_server_proxy.rb:25:in `perform_request'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-proxy-0.6.5/lib/rack/proxy.rb:57:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/engine.rb:527:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/configuration.rb:247:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/request.rb:76:in `block in handle_request'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/thread_pool.rb:337:in `with_force_shutdown'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/request.rb:75:in `handle_request'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/server.rb:431:in `process_client'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/thread_pool.rb:145:in `block in spawn_thread'

And the second type:

[2021-02-25 09:50:57] Forest 🌳🌳🌳  Records Index error: uninitialized constant ForestLiana::UserSpace::ActionTextRichtextSerializer
/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/inflector/methods.rb:284:in `const_get'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/inflector/methods.rb:284:in `block in constantize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/inflector/methods.rb:280:in `each'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/inflector/methods.rb:280:in `inject'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/inflector/methods.rb:280:in `constantize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/core_ext/string/inflections.rb:68:in `constantize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:248:in `find_serializer_class'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:252:in `find_serializer'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:130:in `block in relationships'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:109:in `each'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:109:in `relationships'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:420:in `serialize_primary'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:438:in `block in serialize_primary_multi'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:438:in `map'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:438:in `serialize_primary_multi'
	/Users/nadidami/.gem/ruby/2.6.6/gems/jsonapi-serializers-1.0.1/lib/jsonapi-serializers/serializer.rb:321:in `serialize'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/application_controller.rb:46:in `serialize_models'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/resources_controller.rb:227:in `render_jsonapi'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/resources_controller.rb:36:in `block (2 levels) in index'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/resources_controller.rb:35:in `index'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/base.rb:195:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/rendering.rb:30:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/callbacks.rb:135:in `run_callbacks'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/callbacks.rb:41:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/rescue.rb:22:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications.rb:180:in `block in instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/notifications.rb:180:in `instrument'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/searchkick-4.4.2/lib/searchkick/logging.rb:212:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/abstract_controller/base.rb:136:in `process'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionview-6.0.3.5/lib/action_view/rendering.rb:39:in `process'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal.rb:190:in `dispatch'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_controller/metal.rb:238:in `block in action'
	/Users/nadidami/.gem/ruby/2.6.6/gems/forest_liana-5.4.4/app/controllers/forest_liana/router.rb:40:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:48:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:49:in `block in serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `each'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/route_set.rb:834:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-cors-1.1.1/lib/rack/cors.rb:100:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/engine.rb:527:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/railtie.rb:190:in `public_send'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/railtie.rb:190:in `method_missing'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/mapper.rb:48:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:49:in `block in serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `each'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/journey/router.rb:32:in `serve'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/routing/route_set.rb:834:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-pjax-1.1.0/lib/rack/pjax.rb:12:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/serviceworker-rails-0.6.0/lib/serviceworker/middleware.rb:35:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-attack-6.5.0/lib/rack/attack.rb:99:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-attack-6.5.0/lib/rack/attack.rb:113:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/remotipart-1.4.4/lib/remotipart/middleware.rb:32:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/warden-1.2.9/lib/warden/manager.rb:36:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/warden-1.2.9/lib/warden/manager.rb:34:in `catch'
	/Users/nadidami/.gem/ruby/2.6.6/gems/warden-1.2.9/lib/warden/manager.rb:34:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/etag.rb:27:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/cookies.rb:648:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activerecord-6.0.3.5/lib/active_record/migration.rb:567:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/callbacks.rb:101:in `run_callbacks'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/executor.rb:14:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:132:in `call_app'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:28:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:17:in `catch'
	/Users/nadidami/.gem/ruby/2.6.6/gems/web-console-4.1.0/lib/web_console/middleware.rb:17:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/rack/logger.rb:37:in `call_app'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/rack/logger.rb:26:in `block in call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/tagged_logging.rb:80:in `block in tagged'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/tagged_logging.rb:28:in `tagged'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/tagged_logging.rb:80:in `tagged'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/rack/logger.rb:26:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/sprockets-rails-3.2.2/lib/sprockets/rails/quiet_assets.rb:13:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/request_store-1.4.1/lib/request_store/middleware.rb:19:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/request_id.rb:27:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/method_override.rb:24:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/runtime.rb:22:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/activesupport-6.0.3.5/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/executor.rb:14:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-livereload-0.3.17/lib/rack/livereload.rb:23:in `_call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-livereload-0.3.17/lib/rack/livereload.rb:14:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/static.rb:126:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/actionpack-6.0.3.5/lib/action_dispatch/middleware/host_authorization.rb:82:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/webpacker-5.2.1/lib/webpacker/dev_server_proxy.rb:25:in `perform_request'
	/Users/nadidami/.gem/ruby/2.6.6/gems/rack-proxy-0.6.5/lib/rack/proxy.rb:57:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/railties-6.0.3.5/lib/rails/engine.rb:527:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/configuration.rb:247:in `call'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/request.rb:76:in `block in handle_request'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/thread_pool.rb:337:in `with_force_shutdown'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/request.rb:75:in `handle_request'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/server.rb:431:in `process_client'
	/Users/nadidami/.gem/ruby/2.6.6/gems/puma-5.2.1/lib/puma/thread_pool.rb:145:in `block in spawn_thread'

Hope this helps! Thank you!

Hello @Nadia , for the first error log, could you please share with us the definition of the two models that are being joined here?

Hi @remi,

They’re built in Rails classes so here’s a screenshot of their entries in my db/schema.rb:

I have done a couple of migrations in them in the past so that they work with UUIDs, i.e the Book and User models have UUIDs and they are the ones that can have Active Storage Attachments.

I would have thought other Rails users would have a similar setup!

Let me know what else you might need. Thank you for your time.

Thanks for sharing these definitions! From what I can see here, even though it’s not displayed on the schema, I think that your id column on active_storage_blobs is of type bigint.

Because of this, “active_storage_attachments.record_id” that (supposedly) references “active_storage_blogs.id” can’t work, which explains this “operator does not exist: uuid = bigint” error!

Did you change your column types recently maybe?

Hmm, do you have any idea as to why it would be that my app works fine and Rails Admin works fine, as do other admin apps? Forest is my favourite out of all of the ones I’ve tried so I’d love to get set up on it.

Here are screenshots from my Rails Admin panel:

I haven’t touched those tables since June/July of 2019.

Ooh, I wonder if there’s something that needs tweaking in my .forestadmin-schema.json?

{
  "collections": [{
    "name": "ActiveStorage__Attachment",
    "name_old": "active_storage_attachments",
    "icon": null,
    "is_read_only": false,
    "is_searchable": true,
    "is_virtual": false,
    "only_for_relationships": false,
    "pagination_type": "page",
    "fields": [{
      "field": "id",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "name",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "record_type",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "record_id_int",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "blob",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": "ActiveStorage__Blob.id",
      "inverse_of": "attachments",
      "relationship": "BelongsTo",
      "widget": null,
      "validations": []
    }, {
      "field": "created_at",
      "type": "Date",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "record_id",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }],
    "segments": [],
    "actions": []
  }, {
    "name": "ActiveStorage__Blob",
    "name_old": "active_storage_blobs",
    "icon": null,
    "is_read_only": false,
    "is_searchable": true,
    "is_virtual": false,
    "only_for_relationships": false,
    "pagination_type": "page",
    "fields": [{
      "field": "id",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "key",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "filename",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "content_type",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "metadata",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "byte_size",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "checksum",
      "type": "String",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "created_at",
      "type": "Date",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": null,
      "inverse_of": null,
      "widget": null,
      "validations": []
    }, {
      "field": "preview_image_attachment",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": "ActiveStorage__Attachment.id",
      "inverse_of": "record",
      "relationship": "HasOne",
      "widget": null,
      "validations": []
    }, {
      "field": "preview_image_blob",
      "type": "Number",
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": true,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": "ActiveStorage__Blob.id",
      "inverse_of": null,
      "relationship": "HasOne",
      "widget": null,
      "validations": []
    }, {
      "field": "attachments",
      "type": ["Number"],
      "default_value": null,
      "enums": null,
      "integration": null,
      "is_filterable": false,
      "is_read_only": false,
      "is_required": false,
      "is_sortable": true,
      "is_virtual": false,
      "reference": "ActiveStorage__Attachment.id",
      "inverse_of": "blob",
      "relationship": "HasMany",
      "widget": null,
      "validations": []
    }],
    "segments": [],
    "actions": []
  }

:thinking:

I’m not a user of Rails Admin so I’m afraid I won’t be able to help you with this, but for your current issue with Forest Admin, I’m going to forward it to someone who’s a little bit more skilled in Ruby than I am :wink:

Hi @Nadia,

Do you confirm that your active_storage_blobs.id column is of uuid type in your database?

Hi @arnaud,

Looking at the Rails Admin screenshot above, it seems to be of type bigint.

I’ve not touched this table before. It’s a built-in Rails one.

Thank you,

Nadia

Hi @Nadia ,

I think there is an issue with your 2 fields record_id and record_id_int. I think it could work if the join was made on record_id_int.
Do you have a classes defining those models ? Could you share them ?

Hello @vince,

Thanks for getting in touch with me.

There are no class definitions since these are built-in methods. The record_id_int column is one that’s left behind after a migration I did ages ago so that ActiveStorage worked with UUIDs instead of integer IDs. Here is a history of the relevant migrations:

Okey, it’s pretty hard to debug sorry for all those questions :sweat_smile:
Could you please share the full SQL request that fails :pray:.
You can find more info on how to make rails print the SQL queries here.