Яuбy / Говнокод #16813 Ссылка на оригинал

0

  1. 1
deals = Deal.joins(:deal_locations).select("deals.id, (SELECT array(SELECT category_id FROM deal_categories WHERE deal_id = deals.id ORDER BY category_id ASC)) AS category, deals.start_date, deals.end_date, deals.address, deals.theme, deals.alias, deals.metro, deals.district, deals.discount, deals.coupon_count, deals.issued_coupons, deals.main_image, count(*) OVER() AS total_count, trunc(abs(extract(epoch FROM age(deals.end_date, clock_timestamp()))/86400)) AS days_left").where("deal_locations.deal_id = deals.id AND deal_locations.location_id = ? AND deals.category_id IN (#{categories[0...-2]}) AND deals.id NOT IN (#{ex_deals.map{|e| e}.join(", ")})", params[:location].to_i).active.in_stock.limit(limit).offset(offset).order("deals.start_date desc")

Rails. Да, да, активрекорд, я помню о тебе.

Запостил: adastreamer adastreamer, (Updated )

Комментарии (29) RSS

  • deals = Deal
      .joins(:deal_locations)
      .select(<<-SQL
        deals.id,
        (
          SELECT array(
            SELECT category_id
            FROM deal_categories
            WHERE deal_id = deals.id
            ORDER BY category_id ASC
          )
        ) AS category,
        deals.start_date,
        deals.end_date,
        deals.address,
        deals.theme,
        deals.alias,
        deals.metro,
        deals.district,
        deals.discount,
        deals.coupon_count,
        deals.issued_coupons,
        deals.main_image,
        count(*) OVER() AS total_count,
        trunc(abs(extract(epoch FROM age(deals.end_date, clock_timestamp()))/86400)) AS days_left
        SQL
        )
      .where(<<-SQL, params[:location].to_i
        deal_locations.deal_id = deals.id
          AND
        deal_locations.location_id = ?
          AND
        deals.category_id
          IN (#{categories[0...-2]}) AND deals.id NOT IN (#{ex_deals.map{|e| e}.join(", ")})"
        SQL
        )
      .active
      .in_stock
      .limit(limit)
      .offset(offset)
      .order("deals.start_date desc")


    думаю, так будет легче оценить масштаб бедствий
    Ответить
    • Вручаю вам орден "За заслуги перед Тарасом" первой степени
      Ответить
        • Ты если пытаешься хохлосрачь развести - Сему тыкай, а мне чет надоело. Старый я стал
          Ответить
          • Нет понятия "хохлосрач", есть понятие "имперский имбецил"
            Ответить
          • Как ты мог такое подумать? Просто это первое, что пришло в голову. Если бы тут было написано про Александра, то я бы спросил про Пушкина. Если бы тут было написано про Василя, то я бы спросил про Быкова. Если бы тут было написано про Чингиза, то я бы спросил про Айтматова. Если бы тут было написано про Виктора, то я бы спросил про Гюго.

            При чём тут срачи вообще?
            Ответить
    • Бля, стоит теперь после этого руби учить, или ну его?
      Ответить
      • ну чтобы не городить такие портянки - стоит) человек видимо из мира где про ORMы еще не слышали)
        Ответить
        • ОРМ зло. Видишь юзавшего ОРМ убей, сколько видишь столько и убей.
          Ответить
              • Да блин, большенство современных технологий - уг.
                ORM хотя бы мозг не сношает. Не все же могут CREATE TABLE
                Логично что в сурьезных проектах бд должны создаваться знающими людьми, но почему простому рядовому кодеру не ORMнуть свои классы в базу дазы?
                Ответить
                • Сколько раз на дню нужно делать create table ?

                  А как объяснить компутеру когда нужно left join, а когда нет?
                  Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8