@rubylang

Страница 609 из 1684
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
И судя по просьбе помощи мне кажется что никто не понимает что именно нужно

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
загружать авб_сток джсом при выборе компании или что-нибудь в этом роде
ты имеешь ввиду, включить в сериалайзер компаний :awb_stocks и забирать все это с /company/:id.json ?

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
Ну накидайте в несколько строк запрос и киньте работающее

дальше отрефакторим в линию, может и в запрос

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

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) и дальше у же работать с полученным релейшеном?

Иван
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
Чо

@dd_bb
Забаню щас. Чо такое?

Иван
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 нет синглтон класса(или всё таки есть?)

Страница 609 из 1684