Durante la ricerca del database MYSQL per un'app Rails 2.3.14, ho bisogno di sfuggire la stringa di ricerca in modo appropriato in modo da poter cercare stringhe contenenti virgolette singole (apostrofi). Qual'è il miglior modo per farlo? Sto usando la gemma mysql
, nel caso che importi.Come eseguire l'escape per query MYSQL da Ruby on Rails?
risposta
È possibile utilizzare il metodo di quote
ActiveRecord (ad esempio ActiveRecord::Base.connection.quote("string with ' apostrophe")
), ma i metodi di query di ActiveRecord già fuggire SQL per voi. Per esempio:
a = "string with ' apostrophe"
ModelName.where("field1 = ?", a)
cambierà "stringa con 'apostrofo" a "stringa con '' apostrofo"
Quando si utilizza la gemma mysql
, si ottiene il metodo Mysql.escape_string()
. Utilizzare come segue:
search_terms = Mysql.escape_string("it's working!")
conditions = [ "table1.name LIKE '%#{search_terms}%'" ]
# use conditions for MYSQL query as appropriate
dove è qualcosa di simile per Postgres ?? –
Rails quotes strings come segue:
# Quotes a string, escaping any ' (single quote) and \ (backslash) characters.
def quote_string(s)
s.gsub(/\\/, '\&\&').gsub(/'/, "''") # ' (for ruby-mode)
end
Questo ha funzionato con postgresql –
Questo è bello, grazie – jahrichie
- 1. Ruby on Rails attivo Record Query
- 2. Ruby on Rails - Dynamic query SQL
- 3. Come configurare Ruby on Rails senza database?
- 4. Ruby on Rails Rake Error
- 5. Ruby on Rails MySQL # 08S01Bad handshake - downgrade di MySQL?
- 6. Intellisense per Ruby, Ruby on Rails, Python
- 7. Curl on Ruby on Rails
- 8. VPS Specifiche più basse per eseguire Ruby on Rails
- 9. Come passare da un mese all'altro in Ruby on Rails
- 10. Come scrivere query annidate in ruby on rails?
- 11. parametro passaggio da link_to Ruby on Rails
- 12. Elegante gruppo PostgreSQL per Ruby on Rails/ActiveRecord
- 13. MySQL Ricerca full-text in Ruby on Rails
- 14. Come posso connettermi a MySQL in Ruby on Rails?
- 15. Pubblicazione sull'app Ruby on Rails da Android
- 16. Striscia html da stringa Ruby on Rails
- 17. Come eseguire il Monkey Patch in Ruby on Rails?
- 18. Ruby on Rails: come eseguire le cose in background?
- 19. Problema di connessione Ruby on rails
- 20. Neo4j - impaginazione da Ruby on Rails
- 21. Docsplit Ruby on Rails
- 22. SSO SAML 2.0 per Ruby on Rails?
- 23. Busting Ruby on Rails Myths
- 24. Ruby on Rails versus Python
- 25. Ruby on Rails redirect_to arguments
- 26. Ruby on rails e Node.js
- 27. Ruby on Rails, rilevamento Javascript
- 28. Ruby on Rails 301 reindirizzamento
- 29. Ruby on Rails Query ActiveRecord utilizzando un join
- 30. Configurare Notepad ++ per ruby on rails
Ciò è utile per le query brevi, ma per le query più complesse diventa più facile utilizzare l'SQL in modo più diretto. Sto osservando un caso in cui cerco in cinque diverse tabelle, e diventa molto difficile rintracciare quale variabile è abbinata alla parte della query che usa questa sintassi. – joanwolk
Cerca negli ambiti. Ti permettono di suddividere la tua query in blocchi logici, e quindi concatenarli secondo necessità. È molto più pulito – Angelo
Abbiamo degli ambiti. Separatamente: l'app in questione utilizza anche query SQL raw anziché i metodi Rails SQL come considerazione delle prestazioni, quindi non cambierò questo codice nei metodi ActiveRecord. – joanwolk