初めての Rails プロジェクトに取り組んでいますが、クエリが正しく機能しません。私の全体的な目標は、スコープのコレクションをセットアップして、複数のオプションを持つ長いクエリを作成することです。ただし、最初は、単一のスコープを設定して、単一のモデルから単一の列をクエリしようとしています。これが私のモデルです:
class Drawing < ActiveRecord::Base
has_many :revisions
scope :by_description, lambda { |description| where(description: description) unless description.nil? }
end
これが私のコントローラーのインデックスアクションです:
def index
@drawings = Drawing.by_description(params[:description]).all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @drawings }
end
end
このビューは、Rails のデフォルトのインデックス ビューです。
「Case」などの入力を検索フィールドに入力すると、送信ボタンが機能し、インデックス ビューに移動しますが、「Case」を含む図面だけでなく、すべての「図面」が一覧表示されます。説明。どうもありがとうございました。
適用される開発ログ ファイルのセクションを次に示します。ご覧のとおり、生成される SQL には、追加された説明パラメーターが含まれていません。
Started GET "/drawings?utf8=%E2%9C%93&drawings%5Bdescription%5D=Case&drawings%5Bdrawing_number%5D=&drawings%5Bitem_number%5D=&drawings%5Bpump_model%5D=&drawings%5Bframe_size%5D=&drawings%5Bpart_type%5D=&drawings%5Bcreated_before%281i%29%5D=&drawings%5Bcreated_before%282i%29%5D=&drawings%5Bcreated_before%283i%29%5D=&drawings%5Bcreated_after%281i%29%5D=&drawings%5Bcreated_after%282i%29%5D=&drawings%5Bcreated_after%283i%29%5D=&commit=Search" for 127.6.43.1 at 2013-08-31 11:39:28 -0400
Processing by DrawingsController#index as HTML
Parameters: {"utf8"=>"✓", "drawings"=>{"description"=>"Case", "drawing_number"=>"", "item_number"=>"", "pump_model"=>"", "frame_size"=>"", "part_type"=>"", "created_before(1i)"=>"", "created_before(2i)"=>"", "created_before(3i)"=>"", "created_after(1i)"=>"", "created_after(2i)"=>"", "created_after(3i)"=>""}, "commit"=>"Search"}
[1m[36mDrawing Load (0.3ms)[0m [1mSELECT "drawings".* FROM "drawings" [0m
Rendered drawings/index.html.erb within layouts/application (6.0ms)
Completed 200 OK in 226ms (Views: 186.8ms | ActiveRecord: 0.3ms)