To get around using an OR operator, I resolved this by using 3 queries, which is sub-optimal, but functional.
My first query looks for acronyms where the name is like the search parameter.
acronymQuery = query.includes(:acronyms).where('acronyms.name like ?', wildcard_search).select("terms.id")
The second looks for terms where the name is like the search parameter.
termQuery = query.where('terms.name like ?', wildcard_search).select("terms.id")
I then combine the unique IDs from each query, and my third query searches for those ids.
acronymQueryResults = acronymQuery.all.map {|row| row.id}
termQueryResults = termQuery.all.map {|row| row.id}
ids = (acronymQueryResults + termQueryResults).uniq
query = Term.where('id' => ids)