named_scopeで検索
参考
#112 Anonymous Scopes - RailsCasts
class Product < ActiveRecord::Base has_many :product_details named_scope :active, :conditions => {:enabled => true} named_scope :not_deleted, :conditions => {:delete_flg => false} named_scope :deleted, :conditions => {:delete_flg => true} named_scope :titled, lambda{|query| { :conditions =>["title like ?", "%#{query}%"] }} def self.search(form) scope = Product.scoped({}) scope = scope.active if form[:enabled] scope = scope.deleted if form[:deleted] scope = scope.titled(form[:query]) unless form[:query].blank? scope end end <% form_tag '/products/search' do%> <p>削除 <%= check_box_tag :deleted, 1, @deleted%></p> <p>有効 <%= check_box_tag :enabled, 1, @enabled%></p> <p>クエリ <%= text_field_tag :query, @query%></p> <%= submit_tag :submit %> <%end%>
それっぽいSQLは発行されてる、が
scoped({})の部分が何やってるのかわからない〜。