Closed
Description
I have positions
table, where there is JSONB column data
. I'm trying to search for values of ptype
inside that data
column.
At the moment I can do sorting for ptype
, however search is not working and I get this error:
NoMethodError (undefined method "field" for "pilon":String):
when I search for "pillon" in my ptype
field.
My ajax-datatables-rails
file looks like this:
class PositionDatatable < AjaxDatatablesRails::Base
def view_columns
@view_columns ||= {
name: { source: "Position.name", cond: :like },
ptype: { source: "Position.data->>'ptype'", cond: find_ptype },
id: { source: "Position.id", cond: :eq }
}
end
private
def data
records.map do |record|
{
name: record.name,
ptype: record.ptype, #can access with jsonb_accessor gem
id: record.id
}
end
end
def get_raw_records
Position.all
end
def find_ptype
-> (ptype) { where("positions.data->>'ptype' like ?", "#{ptype}%")}
end
end
Search for my name
column is working just fine since it's regular table column.
For custom search I tried to copy idea from this example. How do I fix my search for JSONB column data, please?