Note that there are some explanatory texts on larger screens.

plurals
  1. PORails "where" query being ignored
    text
    copied!<p>I'm having a problem with a query. I have a list of scopes in my model:</p> <pre><code>class Drawing &lt; ActiveRecord::Base has_many :revisions scope :by_description, lambda { |description| where('description LIKE ?', "%#{description}%") unless description.nil? } scope :by_drawing_number, lambda { |drawing_number| where('drawing_number LIKE ?', "%#{drawing_number}%") unless drawing_number.nil? } scope :by_item_number, lambda { |item_number| where('item_number LIKE ?', "%#{item_number}%") unless item_number.nil? } scope :by_pump_model, lambda { |pump_model| where('pump_model LIKE ?', "%#{pump_model}%") unless pump_model.nil? } scope :by_frame_size, lambda { |frame_size| where('frame_size LIKE ?', "%#{frame_size}%") unless frame_size.nil? } scope :by_part_type, lambda { |part_type| where('part_type LIKE ?', "%#{part_type}%") unless part_type.nil? } scope :by_created_before, lambda { |created_before| where('created_at &lt;= ?', created_before) unless created_before.nil? } scope :by_created_after, lambda { |created_after| where('created_at &gt;= ?', created_after) unless created_after.nil? } </code></pre> <p>And I call on them in my index action in the controller:</p> <pre><code> def index @drawings = Drawing.by_description(params[:drawings][:description]).by_drawing_number(params[:drawings][:drawing_number]).\ by_item_number(params[:drawings][:item_number]).by_pump_model(params[:drawings][:pump_model]).by_frame_size(params[:drawings]\ [:frame_size]).by_part_type(params[:drawings][:part_type]).by_created_before(params[:drawings][:created_before]).\ by_created_after(params[:drawings][:created_after]).all respond_to do |format| format.html # index.html.erb format.json { render json: @drawings } end end </code></pre> <p>All of the queries work, and I can use them to filter a search by any of the given variables, except for the by_created_before and by_created_after scopes. The params hash is showing the date that has been inputted to search, but the outputted query does not include those two scopes. Here is a snippet of the log:</p> <pre><code>Started GET "/drawings?utf8=%E2%9C%93&amp;drawings%5Bdescription%5D=&amp;drawings%5Bdrawing_number%5D=&amp;drawings%5Bitem_number%5D=&amp;drawings%5Bpump_model%5D=&amp;drawings%5Bframe_size%5D e%5D=&amp;drawings%5Bcreated_before%281i%29%5D=&amp;drawings%5Bcreated_before%282i%29%5D=&amp;drawings%5Bcreated_before%283i%29%5D=&amp;drawings%5Bcreated_after%281i%29%5D=2013&amp;drawings%5B %5D=5&amp;drawings%5Bcreated_after%283i%29%5D=2&amp;commit=Search" for 127.6.43.1 at 2013-08-31 16:49:56 -0400 Processing by DrawingsController#index as HTML Parameters: {"utf8"=&gt;"✓", "drawings"=&gt;{"description"=&gt;"", "drawing_number"=&gt;"", "item_number"=&gt;"", "pump_model"=&gt;"", "frame_size"=&gt;"", "part_type"=&gt;"", "created_before(1i re(2i)"=&gt;"", "created_before(3i)"=&gt;"", "created_after(1i)"=&gt;"2013", "created_after(2i)"=&gt;"5", "created_after(3i)"=&gt;"2"}, "commit"=&gt;"Search"} Drawing Load (0.6ms) SELECT "drawings".* FROM "drawings" WHERE (description LIKE '%%') AND (drawing_number LIKE '%%') AND (item_number LIKE '%%') AND (pump_model LIKE '% IKE '%%') AND (part_type LIKE '%%') Rendered drawings/index.html.erb within layouts/application (11.4ms) Completed 200 OK in 291ms (Views: 86.7ms | ActiveRecord: 0.6ms) </code></pre> <p>I've also tried just using </p> <pre><code>lambda {|created_before| where(:created_at &lt;= created_before)...} </code></pre> <p>Thanks for any advise!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload