Giter VIP home page Giter VIP logo

Comments (6)

benhamill avatar benhamill commented on May 29, 2024

I'm not sure what you've tried, but the query objects returned by Textacular's methods should play nicely with the tools available from ActiveRecord for this kind of thing. I found some discussion of this on Stack Overflow that might be helpful.

from textacular.

tinderfields avatar tinderfields commented on May 29, 2024

Here's as close to it as I've got:

scope :with_id, ->(id) {
  where(id: id)
}

Then

search = Linguist.basic_search('1234')

Linguist.select(search.select_values).where(
    Linguist.with_id('1234').where_values.first.or(search.where_values.first)
).order(search.order_values)

It gives roughly the sql I need, but it is choking on this bit:
WHERE (("linguists"."id" = 1234 OR 'to_tsvector(''english'', "linguists"."title"::text) @@ plainto_tsquery(''english'', ''1234''::text) OR

with the error

PG::InvalidTextRepresentation: ERROR: invalid input syntax for type boolean:

Perhaps you could shed some light as to why this would be happening?

from textacular.

benhamill avatar benhamill commented on May 29, 2024

I'm outside my previous experience, here. Anyone else have a better grasp of how AR's or is meant to be used?

from textacular.

thehappycoder avatar thehappycoder commented on May 29, 2024

Good question. I also stumbled across this problem. For now I use the workaround which is not very beautiful.

if query =~ /^[0-9]+$/
        search_criteria[:id] = query.to_i
      end

      result = result.advanced_search(search_criteria, false)

I need this to also search the ID of the record which is of course an Integer and not searchable using textacular.

For me it works. I also search by id. The where clause of generated SQL expression:

WHERE (to_tsvector('russian', "ads_in_list"."short_description"::text) @@ to_tsquery('russian', '70616:*'::text) OR to_tsvector('russian', "ads_in_list"."long_description"::text) @@ to_tsquery('russian', '70616:*'::text) OR to_tsvector('russian', "ad_contacts"."phone"::text) @@ to_tsquery('russian', '70616:*'::text) OR to_tsvector('russian', "ads_in_list"."id"::text) @@ to_tsquery('russian', '70616'::text))

I hope I will find a proper solution in the future.

from textacular.

tinderfields avatar tinderfields commented on May 29, 2024

Thanks for this, not ideal, but a decent hack!

from textacular.

benhamill avatar benhamill commented on May 29, 2024

Since there's a workaround and I don't understand this very well, I'm going to go ahead and close this.

from textacular.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.