СУШКА запросов Active Record - PullRequest
       11

СУШКА запросов Active Record

0 голосов
/ 09 марта 2011

У меня есть 2 похожих запроса, как я могу их высушить? Существует только 1 условие, которое отличается в обоих запросах.

if self.gender_target == "Both"
  return Drop.limit(180).live.where(
  :drops => {:navigation_section_id => 1}  
  ).group(:id).joins(:categories).where(
  :categories => {:id => self.categories}
  ).all
end

if self.gender_target != "Both"
  return Drop.limit(180).live.where(
  :drops => {:navigation_section_id => 1}, 
  :drops => {:gender_target => ["Both", self.gender_target]} #extra condition
  ).group(:id).joins(:categories).where(
  :categories => {:id => self.categories}
  ).all
end

1 Ответ

0 голосов
/ 09 марта 2011
@drops = Drop.limit(180).
              live.
              where(:drops => {:navigation_section_id => 1}).
              group(:id).
              joins(:categories).
              where(:categories => {:id => self.categories})

if self.gender_target != "Both"
  @drops = @drops.where(:drops => {:gender_target => ["Both", self.gender_target]})
end

return @drops.all
...