ActiveRecord::Base.connection.execute
( "SELECT * FROM search_results(p_limit := 12,
p_offset := 0,p_blocked_ids := '',p_following_ids
:= '54,171,174',p_sort := 'latest',
p_tags := '', p_search := '(O'neil)')" )
The special characters in the p_search
param fail. I tried double quoting and $$ $$
quoting with but it's not solving the issue.
What is the proper way to escape special characters in this query?
Full error message:
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "neil"
LINE 1: ...t := 'latest', p_tags := '', p_search := '(O'neil)')
^
: SELECT * FROM search_results(p_limit := 12, p_offset := 0,p_blocked_ids := '',p_following_ids := '54,171,174',p_sort := 'latest', p_tags := '', p_search := '(O'neil)')
from /Users//.gem/ruby/2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `async_exec'
from /Users//.gem/ruby/2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `block in execute'
from /Users//.gem/ruby/2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_adapter.rb:590:in `block in log'
from /Users//.gem/ruby/2.3.0/gems/activesupport-5.0.6/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
from /Users//.gem/ruby/2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
from /Users//.gem/ruby/2.3.0/gems/activerecord-5.0.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:97:in `execu
The suggestion from the assumed duplicate has not helped in this case and returns ', p_search := ''o''neil'')