私は Rails の初心者で、Rails 3.2 のスコープを使用してきました。スコープがコントローラーからコードを分離する方法が気に入っています。しかし、スコープを使用してクエリを作成しているときに、特定の状況でスコープを追加しない方法がわかりません。以下の例を参照してください...
私の CarsController クラスで
if !params[:make_name].blank?
@cars = Car.by_make(params[:make_name]).find(:all, :group => "name")
else
@cars = Car.all
私のカーモデルクラスで。このコードは、「make_name 文字列が 'all' の場合は条件を追加しないでください。それ以外の場合は条件を追加してください」と言おうとしています。
def self.by_make(make_name_str)
if make_name_str == "all"
where("cars.id > ?", 0)
else
make_id = Make.where(:name => make_name_str).first.id
where(:make_id => make_id)
end
end
明らかに、文字列が「すべて」の場合は非常にハッキングされているように見え、それが私の質問です。何も返さないようにするにはどうすればよいですか - 基本的に、この状況ではスコープを追加しないでください。