I’m having a weird issue with acts-as-taggable-on when using tagged_with and the any flag.
My model looks something like this:
class Document < ApplicationRecord
...
belongs_to :phase, optional: true
...
scope :search_by_drug, ->(drug) { tagged_with(drug, on: :drug) if drug.present? }
scope :search_by_area, ->(area) { tagged_with(area, on: :area) if area.present? }
scope :search_by_type, ->(types) { tagged_with(types, on: :doc_type, any: true) if types.present? }
scope :search_by_tags, ->(tags) { tagged_with(tags, on: :tags, any: true) if tags.present? }
...
acts_as_taggable_on :tags, :drug, :area, :doc_type
...
end
and in my controller this is where I'm querying:
class DocumentsController < ApplicationController
include Pagy::Backend
...
# GET /documents
def index
@pagy, @documents = pagy(
Document.includes(:phase, :taggings)
.search_by_drug(params[:drug])
.search_by_area(params[:area])
.search_by_type(params[:types])
.search_by_tags(params[:tags])
.order(sort_order),
items: 5
)
end
...
private
def sort_by
return 'phases.name' if params[:sort] == 'phase'
@sort_by = params[:sort] || 'date'
end
def order
@order = params[:order] || 'asc'
end
def sort_order
"#{sort_by} #{order}"
end
...
end
When I'm searching with tags or by types and I try to order the phase column I’m thrown an error that looks like this:
ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
.
LINE 1: ...) AND "taggings"."context" = 'doc_type') ORDER BY phases.nam...
I’ve done a bunch of searching but the closest issues I could come up with was an old issue on the acts-as-taggable-on github but it was closed because (according to them) they had merged a PR that fixed the issue and there’s nothing new in their issues or SO.
Can anyone point me in the right direction?
Top comments (3)
I've run into this too. I can't remember if I found a solution or just went in another direction.
I can't offer a lot of insight now but I'll give this some thought and come back to you if I have time to look into it.
Good luck!
Thanks, Ben, I appreciate it!
Ordering by phase works fine if I'm searching by drug or area, but the moment either types or tags is included I get the error. It's giving me a fun headache
Still haven't figured this out. Might be opening up an issue on their GitHub if I can figure out a work around.