Size: a a a

2021 February 05

Z

ZadIRa in RubyRush
Йоган Форст
саблайм👌
+
источник

Р

Руслан in RubyRush
Gleb Grishakov
Гайз, привет)
А кто силен в SQL, подскажите плиз, как боролись с такой проблемой:

```
ActiveRecord::StatementInvalid (PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list)
```

Запрос такой: есть участник соревнований - entry. Нам надо найти десятерых последних за него проголосовавших.
То есть: берется участник (entry), ищем его голоса(votes), сортируем по DESC (более поздние), берем у этих голосов айдишники юзеров (уникальные) и потом находим по айдишникам юзеров.
На рельсе это выглядит так:

```
user_ids = @entry.votes.order({ created_at: :desc }).map(&:user_id).uniq.take(10)
```

Проблема тут в том, что мы мапим всех, кто проголосовал, а их может быть много. Нам надо десять.
Вот эта штука сработает, но выжрет памяти, тк мы вытаскиваем всех проголосовавших.
Я пробовал такой вариант:

```
@entry.votes.order('created_at DESC').select(:user_id).distinct
```

Но постгрес так не умеет. Может, кто сталкивался?
С моей стороны я вижу ошибку в постановки задачи. Речь не про БД или язык запросов, а про связи. Иногда нужно расставлять связи исходя из задач, а не логики. Можно хранить айди проголосовавшего, и у проголосовавшего - айди за кого голосовал. Но смотреть нужно исходя из текущей архитектуры и задачи.
источник

GG

Gleb Grishakov in RubyRush
Руслан
С моей стороны я вижу ошибку в постановки задачи. Речь не про БД или язык запросов, а про связи. Иногда нужно расставлять связи исходя из задач, а не логики. Можно хранить айди проголосовавшего, и у проголосовавшего - айди за кого голосовал. Но смотреть нужно исходя из текущей архитектуры и задачи.
Возможно, так и следует делать: хранить проголосовавших)
Спасибо
источник

H

Henadzi in RubyRush
Gleb Grishakov
Гайз, привет)
А кто силен в SQL, подскажите плиз, как боролись с такой проблемой:

```
ActiveRecord::StatementInvalid (PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list)
```

Запрос такой: есть участник соревнований - entry. Нам надо найти десятерых последних за него проголосовавших.
То есть: берется участник (entry), ищем его голоса(votes), сортируем по DESC (более поздние), берем у этих голосов айдишники юзеров (уникальные) и потом находим по айдишникам юзеров.
На рельсе это выглядит так:

```
user_ids = @entry.votes.order({ created_at: :desc }).map(&:user_id).uniq.take(10)
```

Проблема тут в том, что мы мапим всех, кто проголосовал, а их может быть много. Нам надо десять.
Вот эта штука сработает, но выжрет памяти, тк мы вытаскиваем всех проголосовавших.
Я пробовал такой вариант:

```
@entry.votes.order('created_at DESC').select(:user_id).distinct
```

Но постгрес так не умеет. Может, кто сталкивался?
https://stackoverflow.com/questions/420352/how-to-get-last-n-records-with-activerecord
В комментах есть подробности всякие...
источник

GG

Gleb Grishakov in RubyRush
Это да) Спасибо)
Но там замес в уникальности юзеров.
Задача: получить 10 последних проголосовавших юзеров, но так, чтобы это были уникальные юзеры, не повторяющиеся. Можно сделать по этому прнципу так:

user_ids = entry.votes.last(10).pluck(:user_id)
Но при этом может получиться массив с повторяющимися юзерами...

А если так:
user_ids = entry.votes.last(10).pluck(:user_id).uniq
То повторяющиеся убираются. И при этом получается, что их меньше десяти, что нам тоже не подходит)

Вообще, в соседнем чате уже подсказали решение)

Так что гайз, спасибо, всем кто откликнулся и принял участие)
источник
2021 February 06

КБ

Кирилл Богданов... in RubyRush
Новичок,юзаю атом. Он плох? Попробовал установить вскод... извиняюсь, а есть мануал в видео-формате? )))
источник

Мл

Мастер ломастер... in RubyRush
pochatok kukuruzu
Зачем это когда есть уже готовый рубимайн?
Ну например потому что vscode бесплатный)
источник

IS

Igor Shum in RubyRush
при правильном подходе и рубимайн бесплатный)
источник

Мл

Мастер ломастер... in RubyRush
Igor Shum
при правильном подходе и рубимайн бесплатный)
Пиратство не приветствую, ни в каком виде. Это изначально неправильно. Люди делают продукт, а за продукт не платят. Труд должен быть оценен если за этот труд просят деньги. Неважно один доллар или миллион, ваше дело либо купить либо нет)
источник

Мл

Мастер ломастер... in RubyRush
Если коротко, то пиратство - зло
источник

IL

Ilya L. in RubyRush
JB ведь при определенных условиях дает ключ
источник

IS

Igor Shum in RubyRush
у тебя и Windows лицензионный наверное?
источник

IL

Ilya L. in RubyRush
Мне вот на на рубимайн вообще без условий давали на некоторое время - проходил курс на степике и решал там задания - реклама такая видимо
источник

S

Sergey in RubyRush
Igor Shum
у тебя и Windows лицензионный наверное?
у меня две лицухи, и рубимайн лицензия стоит 50$ в год
источник

IS

Igor Shum in RubyRush
ну у меня как будет 50$ на лицуху я тоже обязательно куплю) А пока я учусь, мне неоткуда взять 50$ поэтому буду пользоваться халявой)
источник

S

Sergey in RubyRush
Igor Shum
ну у меня как будет 50$ на лицуху я тоже обязательно куплю) А пока я учусь, мне неоткуда взять 50$ поэтому буду пользоваться халявой)
студ подписка? Тогда другое дело. Да и винду лицензионную можно рублей за 500 найти
источник

IS

Igor Shum in RubyRush
ну да типа того) Винду кстати находил за 150 рублей
источник

AV

Alexander Vladimirov in RubyRush
Igor Shum
у тебя и Windows лицензионный наверное?
У меня 2 лицензионные 🤷‍♀
Как и все по на них
источник

M

Michael in RubyRush
Ilya L.
Мне вот на на рубимайн вообще без условий давали на некоторое время - проходил курс на степике и решал там задания - реклама такая видимо
Учебную лицензию на полгода мы в интенсиве тоже даем.

При небольшой сообразительности и настойчивости можно и самому у них попросить такую напрямую.

И кстати промокод goodprogrammer25
даст вам скидку на любую подписку jetbrains (но это не точно, может только рубимайн, проверяйте).
источник

1

111a in RubyRush
Момент, когда видишь в книге Хартла ссылки на луркоморье.
источник