Comments (6)
Yep. As explained in the README, certain characters have special meaning for advanced_search
. You might find the full docs useful, but colon is one of them.
You probably want basic_search
.
from textacular.
Right, that makes sense, but is letting an exception bubble up to the user really the right way to handle this? If the user inputs an invalid search, it makes more sense to me to just to return an empty AR relation, rather than raising an exception and breaking the app. Or at the very least, the README should be clear that anybody using advanced_search
should be sure to catch the exception and display an error telling the user their syntax was invalid.
from textacular.
Re-implementing the syntax checking that Postgres does on tsquery (or tsvector and whatever else) doesn't seem like a good idea. An empty AR relation seems like we're saying "none found" which is quite different from "you sent in something unexpected". nil
seems like a bad idea for the same reasons. I'm open to the idea of returning something else, but almost anything I can think of would be large equivalent to raising an exception, since it wouldn't behave in a safe manner.
Would it be better to wrap this exception (probably and inspect the message to make sure it is, indeed, an error related to searching) in a new exception scoped to Textacular? Note: ActiveRecord its self just passes this exception through... if you do something like Lesson.where('wggw weg weg egw gwe gwe')
you should get the same PG::SyntaxError
, not an empty AR relation or an AR-scoped exception.
from textacular.
I don't know enough about this stuff to have an opinion on the correct type of exception. But I'll definitely open a PR to update the README with a warning to other folks using advanced_search
that they should catch exceptions for invalid syntax and display a nicer error to their users.
from textacular.
I guess--to me, advanced search implies that you know what you're doing in terms of what Postgres supports for tsquery. If you're putting user input directly in there, that's almost certainly a mistake. If you're taking some search DSL you made up for your users and translating it to PG's syntax, that's the ideal use for advanced_search
. If you want to stick user input directly into a search function, that is what basic_search
is for.
If your concern is user-facing errors, can you touch on that in your PR, too? Advanced search is meant for advanced usage... (I have yet to use this gem in a way that basic search wasn't the best option for, personally).
from textacular.
Well put @benhamill. I don't think there's a good alternative to the exception the Postgres adapter raises.
@michaelrkn, more documentation is great, thanks for writing that up.
from textacular.
Related Issues (20)
- Readme instructions result in indexes that are not used by query plan
- textacular 4.0.1 doesn't support activerecord 5.1.1 HOT 3
- JSONB columns HOT 1
- Migration Error
- "count" method not working results from searches HOT 10
- Gin index is not working with simple dictionaries HOT 1
- Deprecation warning in Rails 5.2 HOT 3
- Migration failed - SQL Syntax Error - "CREATE EXTENSION" HOT 1
- Disable ranking? HOT 3
- One step is missing > Bundle install HOT 1
- Rails 6 Support HOT 1
- Support ActiveRecord 6.0.0 HOT 1
- Create Trigram Migration appends [5.0] even on older Rails HOT 2
- Search across multiple columns not working HOT 1
- How to search distinct results HOT 1
- Web search missing as instance method from 5.2.0 gem HOT 1
- Unable to distinct on a multi-table search HOT 20
- Indexing on web_search? HOT 2
- Support for rails 6.1 HOT 2
- Documentation Site 404s HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from textacular.