I think this is the problem as old as the software design itself.
How to check if something is not used anymore?
It's a problem in dynamic languages like ruby. There are few ways to address that.
1. Cover all your app with end-to-end tests
Usually, it's difficult to have the 100% coverage, and this solution might not be readily available to you
2. Delete the usage and see if everything still works
Like point 1, but manual. Very difficult in bigger systems, and usually you don't have every feature documented.
3. Monkeypatch and log usages
For associations this may be sth like:
has_namy :foos
def foos
log 'foos is used!'
super
end
But as @chumakoff said here https://stackoverflow.com/a/51982936/299774 the association may be used in few more places. So you'd need to make some investigation to find all the places to hook your logging into.
This solution also has a drawback: how long should you wait until you declare the association unused? Should you wait half a year? What if nobody used it for that long, but there's a feature used once a year, and it got broken?
So, what do I do?
It depends on the size of the app and criticality etc. Sometimes you can risk it, sometimes you decide to live with some not used code. Or you get more creative like in here Find unused code in a Rails app.
Or you could disable this association for a fraction of users and watch for exceptions coming to wherever you aggregate logs/exceptions.
Maybe you should check the DB if there's anything in the database? If not - can you find a migration that removed all the stuff from there? Can you contact the author?