1 つのコマンドを使用してすべての行を取得し、それらをフィルター処理する方法はありますか?
だから、今私は条件付きロジックを持っています
if rating_filter.nil?
@movies = Movie.all
else
@movies = Movie.find(:all, :conditions => {:rating => rating_filter})
end
つまり、フィールドのフィルターが設定されていない場合、このフィールドでフィルター処理したくありませんが、2 番目のコマンドに nil を渡すと、次のようになります。
SELECT * FROM movies WHERE rating is NULL, though I need
SELECT * FROM movies
複数のパラメーターがある場合、問題が発生します。両方が設定されている場合は、問題ありません。
@movies = Movie.find(:all, :conditions => {:rating => rating_filter, :date => date_filter})
ただし、1 つのフィルターが設定されていない場合は、ロジックを分岐して別のコマンドを取得する必要があります。
if ..
@movies = Movie.find(:all, :conditions => {:rating => rating_filter)
else
@movies = Movie.find(:all, :conditions => {:date => date_filter})
else
@movies = Movie.all
end
コードの行数を理想的には 1 行に減らすトリックはありますか? =)