- 
                Notifications
    
You must be signed in to change notification settings  - Fork 227
 
Closed
Labels
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?