Tapを使って、Active Recordを操作する


Tapを使わないwhere文

if params[:email].present?
 User.where(email: params[:email])
elsif params[:username].present?
 User.where(username: params[:username])
else
 User.all
end

なんかもっといいほうほうがある気がする

Tapを使ったwhere文

User.tap do |u|
 if params[:email].present?
  break u.where(email: params[:email])
 end
end.tap do |u|
 if params[:username].present?
  break u.where(username: params[:username])
 end
end.tap do |u|
 u.all
end

変わらないですかね?
こっちの方がややDRY化した気がした。