
I
27.02.2017
13:47:48
кстати, а bullet никому не помогает что ли от N+1??

Nikolay
27.02.2017
13:47:50
в 95% случаев AMS очень просто все делает, в оставшихся 5% надо мозгами пошевелить

Lupsick
27.02.2017
13:47:54
Берёшь все данные из бд и сериализуешь dry-types

Nikolay
27.02.2017
13:48:00

Google

Ilya
27.02.2017
13:48:34
Только что протестил, взял includes
вызвал ассоциацию
потом flat_map(&:....).map(&:attributes)
в базу никто не ходил

Lupsick
27.02.2017
13:49:15
Норм вкач

Ilya
27.02.2017
13:49:17
логи чистые

Lupsick
27.02.2017
13:49:34
Вот бы щас методы повызывать

Ilya
27.02.2017
13:49:50
ну это просто методы, которые вызывают ассоциацию
parents = Parent.includes(:child).limit(5)

Lupsick
27.02.2017
13:50:19
И так у тебя в 90% случаев в твоём коде
Так себе идея

Ilya
27.02.2017
13:50:46
parents.flat_map(&:childs).map(&:attributes)

ojab
27.02.2017
13:50:47

Google

Ilya
27.02.2017
13:50:57
все
куча кода ?

Lupsick
27.02.2017
13:51:18
Ща я домой приду кину тебе код

Ilya
27.02.2017
13:52:16
просто я не понял весь этот гон на includes
нормально он работает, если юзать так, как написано в доках
проблема может быть, если трансформировать релейшн в массив
тогда да

Lupsick
27.02.2017
13:53:54
В моем понимании если я хочу данные из джоин то я должен их сразу и получать

Ilya
27.02.2017
13:54:02
ну так напиши SQL

Lupsick
27.02.2017
13:54:20
Ну так а нахуй AR тогда лол

Ilya
27.02.2017
13:54:21
это самый короткий способ

Dima
27.02.2017
13:54:21
Лол

Ilya
27.02.2017
13:54:36
AR не решит все твои проблемы

Lupsick
27.02.2017
13:54:37
Зачем мне эти сложности если я могу взять sequel и просто не ебаться
Sequel решает

ojab
27.02.2017
13:54:58
или заюзать .eager_load, ага

Lupsick
27.02.2017
13:55:09
Побольше бы кода пописать

ojab
27.02.2017
13:55:27
в default scope, очевидно, если данные нужны в каждом запросе

Ilya
27.02.2017
13:55:49

Google

Lupsick
27.02.2017
13:55:59
Или другие проблемы
Потому что он не сбрасывает скоуп

ojab
27.02.2017
13:56:17

Lupsick
27.02.2017
13:56:23
Ну он прав
Дефолт скоуп это очень плохая штука

ojab
27.02.2017
13:56:52

Lupsick
27.02.2017
13:57:07
Я тебе привёл пример
То что так лучше не делать

Alexander
27.02.2017
13:57:21

Dima
27.02.2017
13:57:50
А началось все просто с обращения ханами

ojab
27.02.2017
13:57:50
А я говорил что default scope хорошая штука? В данном случае она решает проблему. Не нравится default_scope — можно заюзать не-default.

Lupsick
27.02.2017
13:58:10
А ну вот бы ещё кода пописать

Ilya
27.02.2017
13:58:10
default scope это то, что сработает в любом случае. Напиши обычный скоуп и вызывай его явно. Ваша погоня за меньшим количеством буковок приносит головную боль остальным разработчикам

Dima
27.02.2017
13:58:13
Обсуждения

Lupsick
27.02.2017
13:58:14
Однотипного

ojab
27.02.2017
13:58:26
Я тебе привёл пример
Не вижу примера. Вижу "active_admin криво работает с AR, поэтому не нужно юзать default_scope".

Lupsick
27.02.2017
13:58:57
Дефолт скоуп порождает дефолтное поведение там где оно не предполагалось например

Alex
27.02.2017
13:59:15
дефолтный скоуп порождает зло.

Google

Lupsick
27.02.2017
13:59:22
И в итоге ты сидишь дебажишь какую то парашу непонятную

Dima
27.02.2017
14:00:01
Ожаб ты предложил очень плохое решение.

ojab
27.02.2017
14:00:41
Никто не говорит, что default_scope решает все проблемы и вообще хорошая вещь, но пока что ни одного аргумента против не прозвучало. (если не считать реплику "антипаттерн" аргументом)

Lupsick
27.02.2017
14:00:50
Нравится писать дохуя однотипного кода - пожалуйста, мне не нравится

Ilya
27.02.2017
14:01:10
я пишу MyClass.all
а получаю говно

Lupsick
27.02.2017
14:01:17

Ilya
27.02.2017
14:01:35
иду в другую таблицу, делаю тяжелый джоин
я просто хотел MyClass.all

Admin
ERROR: S client not available

ojab
27.02.2017
14:01:47

Ilya
27.02.2017
14:02:03
это не AR issue

ojab
27.02.2017
14:02:08
(и не проблема default_scope в частности)

Ilya
27.02.2017
14:02:23
просто люди договорились не юзать это
потому что очень сложно дебажить
ты же не описываешь каждый default_scopе в доках прилаги
а телепатов нет
итого, приходит новый разраб на проект
и охуевает

Google

Ilya
27.02.2017
14:03:36
потому что творится черт знает что

ojab
27.02.2017
14:04:13
Если новый разраб не знает базовые вещи в AR — это тоже не проблема AR.

Dima
27.02.2017
14:04:32
Лол

Ilya
27.02.2017
14:04:41
он просто НЕ ТЕЛЕПАТ

Dima
27.02.2017
14:04:48
Скажи еще что у ар нет проблем

Ilya
27.02.2017
14:05:07
у AR есть проблемы, у всего есть проблемы)

ojab
27.02.2017
14:05:14

Dima
27.02.2017
14:05:18
И с каких это пор антипатерн перестал быть аргументом против

Alex
27.02.2017
14:05:35

ojab
27.02.2017
14:06:27
С тех пор что "антипаттерн" не несёт никакой смысловой нагрузки, а развернуть определение почему-то никто не в состоянии.

Dima
27.02.2017
14:06:38
Эта хуйня половину гемов сломает. Да, это не проблема ар, но отличный аргумент забыть об этом решении.

ojab
27.02.2017
14:06:50

Ilya
27.02.2017
14:06:58

ojab
27.02.2017
14:08:07

Ruslan
27.02.2017
14:08:30
за дефолтные скоупы надо руки отрывать

Ilya
27.02.2017
14:09:12
class Post
default_scope where(published: true).order("created_at desc")
end
Post.new
=> #<Post id: nil, title: nil, created_at: nil, updated_at: nil, user_id: nil, published: true>

ojab
27.02.2017
14:09:18

Ilya
27.02.2017
14:09:23
это нормально?

Ruslan
27.02.2017
14:09:30
это хрень какая-то
неочевидная

Ilya
27.02.2017
14:09:40
ты всего лишь создаешь новый объект

Ruslan
27.02.2017
14:09:45
лень написать в нужно запросе скоуп?

Ilya
27.02.2017
14:09:51
и у него поля из default_scope