I am currently creating a search form on scope.I want to search for multiple columns from two models and one model, but I don't know what it says.Currently, I can search for one column for each of the two models, but I'm worried because I don't know more than one column. I'll list the corresponding parts below.
order.rb
scope:search_by_keyword, ->(keyword){
where("orders.name LIKE:keyword", keyword:"%#{sanitizize_sql_like(keyword)}%") if keyword.present?
}
I'd like to have multiple columns in the scope here, but the above is a description that works fine, and I thought I should add or to the keyword: but I got an error.
Error Order.rb Description
scope:search_by_keyword, ->(keyword){
where("orders.name LIKE orders.address LIKE:keyword", keyword: "%#{sanitize_sql_like(keyword)}%", keyword: "%#{sanitize_sql_like(keyword)}%") if keyword.present?
}
Error Contents
SQLite3::SQLException:near"or":syntax error:SELECT COUNT(*) FROM "orders" INNER JOIN" users"ON" users".id"="orders".user_id" WHERE(users.name LIKE'%take%)OR(orders.name LIKE or address'%LIKE')
Just for your information, this is the description of orders_controller.rb
def index
if params [:q]
relationship=Order.joins(:user)
@orders=relationship.merge(User.search_by_keyword(params[:q]))
.or(relationship.search_by_keyword(params[:q]))
.paginate(page:params[:page])
else
@orders=Order.paginate(:page=>params[:page],:per_page=>10)
end
end
Also, just in case, views/orders/index
<div>
<%=form_tag(orders_path, method::get)do%>
<div>
<%=search_field_tag "q", params[:q], placeholder: "keyword search" %>
<span>
<%=submit_tag "Search"%>
</span>
</div>
<%end%>
</div>
That's all.It may be written in scope, but I don't understand more than one case at all, so if you understand, please take care of me m(._.)m
ruby-on-rails ruby
Self-resolved.
Affected parts
scope:search_by_keyword, ->(keyword){
where("(orders.name LIKE:keyword)OR(orders.address LIKE:keyword), keyword:"%#{sanitizes_sql_like(keyword)}%") if keyword.present?
}
( ) and ( ) : It seemed like the answer was to put the keyword in ( ).As I wrote at the time of the error, I'm glad I didn't repeat the second half.
626 Uncaught (inpromise) Error on Electron: An object could not be cloned
574 rails db:create error: Could not find mysql2-0.5.4 in any of the sources
577 Who developed the "avformat-59.dll" that comes with FFmpeg?
925 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
© 2024 OneMinuteCode. All rights reserved.