
Mikhail
13.11.2016
18:56:20
сервис "погуглим за тебя" тут работает. Планомерно идем в сторону "поработай за меня", "сделай вместо меня")
я бы гуглил чтото типа eager_load with limit
чтонибудь такое
но в любом случае на realtions с выборкой я так понимаю делать

Google

Michael
13.11.2016
18:58:51
спасибо

Иван
13.11.2016
19:02:23
я чего то запутался, вот это то что надо? -
companies = Company.where(id: AwbStock.select(:company_id).where.not(company_id: nil).limit(10)).order(:name)

Michael
13.11.2016
19:06:47
нет так не работает

Иван
13.11.2016
19:10:15
а на что ругается?
так по идее в выборку не должны попасть company_id равные nil

Michael
13.11.2016
19:11:25
ну они и не попадают

Иван
13.11.2016
19:12:02
ну тогда я видимо не понял что тебе надо)

Kirill
13.11.2016
19:12:12
как я понял, нужно выбрать все компании, а к каждой подгрузить N awb_stock?

Michael
13.11.2016
19:12:46
да

Kirill
13.11.2016
19:13:05
ну, общего решения в один запрос не будет :)

Michael
13.11.2016
19:13:19
я уже понял

Kirill
13.11.2016
19:13:47
тебе нужно решить, что тебе выгоднее, сделать н запросов в базу или отфильтровать уже массив в руби

Mikhail
13.11.2016
19:14:23
Тут вообще не в оптимизации дело. Я так понимаю что запроса вообще нет.

Google

Kirill
13.11.2016
19:14:30
если авб_стоков не по 100 у каждой компании, то легче из массива взять первые н штук
хм

Mikhail
13.11.2016
19:15:31
И судя по просьбе помощи мне кажется что никто не понимает что именно нужно

Michael
13.11.2016
19:15:57

Kirill
13.11.2016
19:16:21
а компаний сколько за раз?

Michael
13.11.2016
19:17:17
компаний тоже много

Kirill
13.11.2016
19:18:46
ну тогда сделай бенчмарк. первый вариант c прелоадом, второй - с несколькими запросами, и посмотри, что быстрее

Alexander
13.11.2016
19:18:48
а почему не сделать просто 2 запроса – в один получить компанию, а в другом что-нибудь вроде AwbStock.where(company_id: company.id).limit(10) ?

Kirill
13.11.2016
19:19:41
только их будет не 2, а 2 * n

Alexander
13.11.2016
19:19:53
А, нужно еще все компании получить?

Kirill
13.11.2016
19:20:29
а вообще, лучше задачу изменить таким образом, чтобы не делать такие запросы :)
загружать авб_сток джсом при выборе компании или что-нибудь в этом роде

Michael
13.11.2016
19:23:48

Mikhail
13.11.2016
19:23:59
о господи
(((

Alexander
13.11.2016
19:24:14
AwbStock.all.group_by(&:company) :-)

Kirill
13.11.2016
19:25:47
нет, забирать с что-то вроде /company/:id/awb_stocks.json
но тут все зависит от того, зачем тебе вообще эти данные

Mikhail
13.11.2016
19:26:25
парни вы чето нитуда едете
Надо сделать выборку под селект

Google

Kirill
13.11.2016
19:26:33
:)

Mikhail
13.11.2016
19:27:09
и всего та, че за наркомания. Ставим драпер, делаем там выборку.
Проблема в чем? проблема в том, что автор или не может составить такую выборку или не может сформулировать что надо
Как делается выборка:
пишем в несколько запросов, рефакторим

Kirill
13.11.2016
19:28:38
вроде же разобрались, что нужно

Mikhail
13.11.2016
19:28:54
Ну накидайте в несколько строк запрос и киньте работающее
дальше отрефакторим в линию, может и в запрос

Michael
13.11.2016
19:29:12

Mikhail
13.11.2016
19:29:36
нет я не ворчу. Ты просто обращаешься за помощью, а пруфы не кладешь сюда. Кидай пруфы

Michael
13.11.2016
19:30:04
ты жалуешься что я не могу объяснить, что нудно

Mikhail
13.11.2016
19:30:23
Ну тогда это проблема у тебя. Кидай что есть в гист

Michael
13.11.2016
19:30:34
почему @likeath понял что нужно, а ты до сих пор не пожешь понять ?

Mikhail
13.11.2016
19:30:44
Покажи код, покажи лог. Скажи где тебе там нужен лимит. Почему ты не применяешь limit
почему у тебя в таблице пустые foreign key
Это нормально или их надо обрезать

Michael
13.11.2016
19:32:05
это нормально
они могут быть пустыми

Mikhail
13.11.2016
19:32:18
то есть ты ищешь where(id: NIL)
если у тебя связь должна быть лимитирована, я прислал тебе один из вариантов написать кастомный has_many

Michael
13.11.2016
19:35:34

Google

Avgust
13.11.2016
19:35:44
Выводить приглашение для ввода («Введите N:») не нужно. Также не нужно ожидать нажатия клавиши в конце работы программы.

Mikhail
13.11.2016
19:37:36

Иван
13.11.2016
19:54:21
так подождите, если нужны все компании и awbstock этих компаний, то почему не сделать Company.includes(:awbstocks) и дальше у же работать с полученным релейшеном?

Rafkat
13.11.2016
19:55:00
И лези лоад там

Иван
13.11.2016
19:55:33
ну да, запрос к базе всего 1 ведь получится?

Kirill
13.11.2016
19:56:29
2
один для компани, другой для авб стокс

Admin
ERROR: S client not available

Иван
13.11.2016
19:57:07
компании и авбстокс
ага

Kirill
13.11.2016
19:58:07
но если у него на странице 1к компаний, и у каждой по 1к сток, то может быть не очень :)

Mikhail
13.11.2016
19:58:44
Все верно, тащить тысячи нельзя

Kirill
13.11.2016
19:59:03
в общем, я бы сравнил просто два варианта, и выбрал более быстрый

Mikhail
13.11.2016
19:59:23
я бы выбрал тот, который бы занял меньше времени на разработку

Kirill
13.11.2016
19:59:31
Как я до этого писал :)
да там разница в два слова будет
хотя, мб эту страницу видят 2 человека в день, и это вообще все никакого значения не имеет

Mikhail
13.11.2016
20:00:57
скорее всего так и есть

Иван
13.11.2016
20:15:57
а есть тут кто сможет по объектной моделе ответить на пару вопросов, а то я с чего начал её изучать к тому же вопросу и пришёл опять

Google

Artur
13.11.2016
20:18:45
Ты не спрашивай, спрашивай

Иван
13.11.2016
20:22:08
Вкратце я опять перестал понимать как наследуются "методы класса"
class A
def self.hello
"hello from A singleton class"
end
end
class B < A; end
B.hello # hello from A singleton class
Я уже тут спрашивал по поводу момента, когда руби создает синглтон класс класса B
и ojab ответил что при создании класса руби создает синглтон класс этого класса
что олично объяняло наследовние
но похоже что это не так
и руби не создает автоматически синглтон класс
и тогда я не понимаю как метод hello нашелся для объекта B

Alex
13.11.2016
20:25:00
кастуй йоппа

Иван
13.11.2016
20:26:37
ojab ссылался на RubyVM.stat[:class_serial] котрый действительно увеличивается на 2 после создания обычного класса, но вот если руками создать синглтон класс, то он еще раз увеличиться на 1
ObjectSpace.each_object(Class).count показывет увеличение на 1 после создания обычного класса
и еще на 1 после создания синглтон класса либо если мы определим метод класса
@dd_bb

yopp
13.11.2016
20:29:35
Чо

Иван
13.11.2016
20:30:20
а я тут выше расписал, может ты сможешь помочь
вопрос по объектной моделе появился

yopp
13.11.2016
20:30:55
Вечером в воскресенье? Ну уж нет
Совесть имей.

kapkapbopoh
13.11.2016
20:37:36
Вроде наследование влияет на синглтон классы, если Bar < Foo, то синглтон класс класса Bar наследуется синглтон класса класса Foo

Иван
13.11.2016
20:38:27
так и есть, но в моем примере у класса B нет синглтон класса(или всё таки есть?)