@proRuby

Страница 1039 из 1594
0x58
08.02.2018
06:27:31
Rival
08.02.2018
07:48:55
Точную коррелицию данных ещё не проводили, мало данных, но на глаз можно сказать что лишним весом чаще всего страдают разработчики на Java, а реже всем моются на C++. Спасибо тем, кто прошел опрос!

Google
Максим
08.02.2018
07:48:58
когда отвечал что ебусь раз в год стало грустно

Alexander
08.02.2018
07:56:04
это еще часто

Amir
08.02.2018
07:58:05
Ребята научите фокусам Например у меня часто бывает такой дурацкий код qwe = 123 qweqwe = "qweqw" asd = "asdasd" и из этих переменных строю hash qqq = { qwe: qwe, qweqwe: qweqwe, asd: asd } может есть элегантный способ? этих переменных у меня десятки

Rival
08.02.2018
07:58:24
А будут результаты по общей картине?
Да, конечно. Но пока что выборка небольшая.

Amir
08.02.2018
08:00:29
может можно так %w(qwe, qweqwe, asd).each do и тут как то их пихать в hash

Alex
08.02.2018
08:07:28
%i(k1 k2 k3).zip([123, 'v2', :v3]).to_h но по-моему это нечитаемо думаю допустимо если переменные в коде никак ни используются - для абстрактного парсинга\сериализации сойдет. А если переменные нужные и используются в коде - то только явное указание и с вменяемым названием

Vasiliy
08.02.2018
08:23:48
возьми жс там красево с этим

Amir
08.02.2018
08:23:48
оО круто получилось!!! qwe = 123 qweqwe = 123123 qweqweqwe = 123123123 q = {} %w(qwe qweqwe qweqweqwe).each { |t| q[t] = eval(t) } ведь чувствовал что можно :)

kolas
08.02.2018
08:39:23
никогда не любил метамагию, почему людям лень несколько строк код дополнительных набрать?

Google
Evgeny
08.02.2018
08:42:03
Привет, можете подсказать правильно ли делаю SQL, дело в том, что в консоли вроде пашет, а в rspec находит только одну запись, а должно быть две. Client.joins(:invoices, :payments) .where("invoices.is_digital = 1 OR payments.kind = '#{PaymentType::MONETA}'") .distinct В консоли пробовал без OR поочередно, все работает. Rspec видит первое условие, только если удалить payments из joins и условие соответственно.

Dmitriy
08.02.2018
08:46:18
Evgeny может быть базы разные

Evgeny
08.02.2018
08:47:24
Дак в спеках через let! все объекты созданы. Простой поиск Invoices.where(is_digital: true) работает же

И связи есть у клиента со счетами

Решил вот таким образом Client.includes(:invoices, :payments).where("invoices.is_digital = 1 OR payments.kind = '#{PaymentType::MONETA}'").references(:invoices, :payments)

Только не понятно, с joins так нельзя никак сделать разве

Надо sql как то подтянуть

Vasiliy
08.02.2018
09:03:28
попробуй дебагером остановиться

wi11son
08.02.2018
09:04:37
Надо sql как то подтянуть
попробуй первый и второй запрос в .to_sql и посмотри разницу генерируемых запросов

Evgeny
08.02.2018
09:05:01
Ну includes делает LEFT OUTER JOIN

а joins INNER

Я вот с sql все время туплю, что то простое не сложно, а вот такие запросы и сложнее уже все, базы(знаний) не хватает)

Michael
08.02.2018
09:17:49
оО круто получилось!!! qwe = 123 qweqwe = 123123 qweqweqwe = 123123123 q = {} %w(qwe qweqwe qweqweqwe).each { |t| q[t] = eval(t) } ведь чувствовал что можно :)
тогда уж лучше так qwe = 123 qweqwe = 123123 qweqweqwe = 123123123 %w(qwe qweqwe qweqweqwe).map { |t| [t, eval(t)] }.to_h

ojab
08.02.2018
09:22:39
и лучше binding.local_variable_get вместо eval

Michael
08.02.2018
09:23:24
или так %i(qwe qweqwe qweqweqwe).map { |t| [t, eval(t.to_s)] }.to_h %w(qwe qweqwe qweqweqwe).map { |t| [t.to_sym, eval(t)] }.to_h что бы потом не делать symbolize если удобнее работать с params[:qweqwe] вместо params['qweqwe']

%w(qwe qweqwe qweqweqwe).map { |t| [t, binding.local_variable_get(t)] }.to_h

даже вот такм можно)) но тут может захватить лишнего binding.local_variables.map { |t| [t, binding.local_variable_get(t)] }.to_h

fff= 43343 def aaa qwe = 123 qweqwe = 123123 qweqweqwe = 123123123 binding.local_variables.map { |t| [t, binding.local_variable_get(t)] }.to_h end aaa == {:qwe=>123, :qweqwe=>123123, :qweqweqwe=>123123123}

Google
Максим
08.02.2018
10:16:04
реьят есть какой способ в рельсах контролировать что именноь будет в SELECT?

он мне туда пихает кучу всего

а мне нужны только объекты модели

и из-за этой кучи всег оу меня не срабатывает гурп бай хевинг

.select только добавляет, удалить с помощью неё не знаю как

ojab
08.02.2018
10:18:58
wat

Максим
08.02.2018
10:20:04
ну у меня есть запрос

Ярослав
08.02.2018
10:21:18
Максим
08.02.2018
10:21:21
Building.where('building_assignments.id IN (?) OR flats.building_id = buildings.id', RESIDENTIAL_ASSIGNMENTS) .distinct .joins(association.name.to_sym) .group("#{table_name}.id").having("count(#{association.name}.id) = ?", lookup) примерно такой собирается

в итоге шлёт трит аких запроса (219.4ms) SELECT COUNT(DISTINCT `buildings`.`id`) FROM `buildings` LEFT OUTER JOIN `building_assignments_buildings` ON `building_assignments_buildings`.`building_id` = `buildings`.`id` LEFT OUTER JOIN `building_assignments` ON `building_assignments`.`id` = `building_assignments_buildings`.`building_assignment_id` LEFT OUTER JOIN `flats` ON `flats`.`building_id` = `buildings`.`id` WHERE (building_assignments.id IN (1,8,10,11) OR flats.building_id = buildings.id) SQL (161.8ms) SELECT DISTINCT `buildings`.`id`, `buildings`.`id` AS alias_0 FROM `buildings` LEFT OUTER JOIN `building_assignments_buildings` ON `building_assignments_buildings`.`building_id` = `buildings`.`id` LEFT OUTER JOIN `building_assignments` ON `building_assignments`.`id` = `building_assignments_buildings`.`building_assignment_id` LEFT OUTER JOIN `flats` ON `flats`.`building_id` = `buildings`.`id` WHERE (building_assignments.id IN (1,8,10,11) OR flats.building_id = buildings.id) ORDER BY `buildings`.`id` DESC LIMIT 20 OFFSET 0 SQL (5.9ms) SELECT DISTINCT `buildings`.`id` AS t0_r0, `buildings`.`city_name` AS t0_r1, `buildings`.`number` AS t0_r2, `buildings`.`transliteration` AS t0_r3, `buildings`.`class_code` AS t0_r4, `buildings`.`ventilation_code` AS t0_r5, `buildings`.`conditioning_code` AS t0_r6, `buildings`.`description` AS t0_r7, `buildings`.`is_active` AS t0_r8, `buildings`.`old_id` AS t0_r9, `buildings`.`area` AS t0_r10, `buildings`.`land_area` AS t0_r11, `buildings`.`taxes_department_number` AS t0_r12, `buildings`.`year` AS t0_r13, `buildings`.`alarming_code` AS t0_r14, `buildings`.`security_code` AS t0_r15, `buildings`.`district_code` AS t0_r16, `buildings`.`postcode` AS t0_r17, `buildings`.`name` AS t0_r18, `buildings`.`eng_name` AS t0_r19, `buildings`.`floors` AS t0_r20, `buildings`.`created_at` AS t0_r21, `buildings`.`updated_at` AS t0_r22, `buildings`.`latitude` AS t0_r23, `buildings`.`longitude` AS t0_r24, `buildings`.`street_id` AS t0_r25, `buildings`.`handler_company_id` AS t0_r26, `buildings`.`rent_contract_date` AS t0_r27, `buildings`.`parking` AS t0_r28, `buildings`.`parking_json` AS t0_r29, `buildings`.`parking_qnt` AS t0_r30, `buildings`.`parking_covered` AS t0_r31, `buildings`.`parking_covered_qnt` AS t0_r32, `buildings`.`parking_factor` AS t0_r33, `buildings`.`freight_elevators` AS t0_r34, `buildings`.`passenger_elevators` AS t0_r35, `buildings`.`inner_comment` AS t0_r36, `buildings`.`outer_comment` AS t0_r37, `buildings`.`updater_id` AS t0_r38, `buildings`.`act_percentage` AS t0_r39, `buildings`.`owner_id` AS t0_r40, `buildings`.`main_img_url` AS t0_r41, `buildings`.`thumb_url` AS t0_r42, `buildings`.`old_address` AS t0_r43, `buildings`.`street_found` AS t0_r44, `buildings`.`point` AS t0_r45, `buildings`.`is_checked` AS t0_r46, `buildings`.`full_address_cache` AS t0_r47, `buildings`.`metro_stations_cache` AS t0_r48, `buildings`.`full_name_cache` AS t0_r49, `buildings`.`blocks_count` AS t0_r50, `buildings`.`short_info_cache` AS t0_r51, `buildings`.`lift_company` AS t0_r52, `buildings`.`created_by` AS t0_r53, `buildings`.`updated_flats_count` AS t0_r54, `buildings`.`not_moderated_flats_count` AS t0_r55, `buildings`.`last_presentation_at` AS t0_r56, `building_assignments`.`id` AS t1_r0, `building_assignments`.`name` AS t1_r1, `building_assignments`.`created_at` AS t1_r2, `building_assignments`.`updated_at` AS t1_r3, `flats`.`id` AS t2_r0, `flats`.`preview_url` AS t2_r1, `flats`.`rooms_count` AS t2_r2, `flats`.`number` AS t2_r3, `flats`.`entrance_number` AS t2_r4, `flats`.`floor` AS t2_r5, `flats`.`area` AS t2_r6, `flats`.`rooms_area` AS t2_r7, `flats`.`kitchen_area` AS t2_r8, `flats`.`client_commission` AS t2_r9, `flats`.`agent_commission` AS t2_r10, `flats`.`furniture` AS t2_r11, `flats`.`repair_type` AS t2_r12, `flats`.`status` AS t2_r13, `flats`.`created_at` AS t2_r14, `flats`.`created_by` AS t2_r15, `flats`.`updated_at` AS t2_r16, `flats`.`waiting_to` AS t2_r17, `flats`.`got_from` AS t2_r18, `flats`.`description` AS t2_r19, `flats`.`broker_id` AS t2_r20, `flats`.`cian_description` AS t2_r21,

`flats`.`building_id` AS t2_r22, `flats`.`status_date` AS t2_r23, `flats`.`source` AS t2_r24, `flats`.`kind` AS t2_r25, `flats`.`loggias_count` AS t2_r26, `flats`.`yard_windows` AS t2_r27, `flats`.`street_windows` AS t2_r28, `flats`.`balconies_count` AS t2_r29, `flats`.`attrs_json` AS t2_r30, `flats`.`ad_type` AS t2_r31, `flats`.`joint_bathroom` AS t2_r32, `flats`.`separate_bathroom` AS t2_r33, `flats`.`is_moderated` AS t2_r34, `flats`.`moderating_info` AS t2_r35, `flats`.`is_active` AS t2_r36, `flats`.`rent_for_cian` AS t2_r37, `flats`.`sale_for_cian` AS t2_r38 FROM `buildings` LEFT OUTER JOIN `building_assignments_buildings` ON `building_assignments_buildings`.`building_id` = `buildings`.`id` LEFT OUTER JOIN `building_assignments` ON `building_assignments`.`id` = `building_assignments_buildings`.`building_assignment_id` LEFT OUTER JOIN `flats` ON `flats`.`building_id` = `buildings`.`id` WHERE (building_assignments.id IN (1,8,10,11) OR flats.building_id = buildings.id) AND `buildings`.`id` IN (5435, 5434, 5433, 5432, 5431, 5430, 5428, 5425, 5424, 5423, 5420, 5418, 5417, 5415, 5414, 5413, 5411, 5410, 5409, 5408) ORDER BY `buildings`.`id` DESC

и вот в третьем где куча t0_r1 и тд

Максим
08.02.2018
10:22:12
мне они не нужны я хочу просто обхекты нужные получить зданий без квартир

вообще ничего не поменяло

Добавь перед селектом unscope(:select)

даже запрост походу не изменился

ojab
08.02.2018
10:23:49
oh my

Максим
08.02.2018
10:23:55
но я его до груп бай поставил

ща попробую после

Google
ojab
08.02.2018
10:24:21
во-первых такое длинное надо кидать в gist

и читабельнее будет

Максим
08.02.2018
10:24:34
во-первых такое длинное надо кидать в gist
ща, просто в консоли оно покороче казалось

https://gist.github.com/Qew7/c44e8826561478bf3b8354faeb2a6076

ojab
08.02.2018
10:25:57
во-вторых ты AR хочешь использовать или sql писать? Вот это вот всё 'building_assignments.id IN (?) OR flats.building_id = buildings.id', RESIDENTIAL_ASSIGNMENTS можно делать средствами AR.

Admin
ERROR: S client not available

ojab
08.02.2018
10:26:26
+непонятно что за запрос вообще делается, wtf association.name.to_sym?

Максим
08.02.2018
10:26:27
погляжу исправлю

+непонятно что за запрос вообще делается, wtf association.name.to_sym?
ну это я просто с модуля своего скопировал, он метапрограммированием генерирует нужные методы

Building.eager_load(:building_assignments, :flats).where('building_assignments.id IN (?) OR flats.building_id = buildings.id', RESIDENTIAL_ASSIGNMENTS) .distinct .joins(:flats) .group("building.id").having("count(flats.id) = ?", lookup)

вот так

ojab
08.02.2018
10:28:25
И откуда join с building_assignments берётся?

Максим
08.02.2018
10:28:59
бля строчку забыл

ща

ojab
08.02.2018
10:29:07
:|

Максим
08.02.2018
10:29:15
исправил

видимо от игер лоада он и сует туда колонки из флетс

да?

ojab
08.02.2018
10:29:44
suddenly eager_load делает ровно то, что должен делать

Google
ojab
08.02.2018
10:30:16
Или и читай документацию про eager_load/includes/references/joins

и будет тебе счастье

В ActiveRecord::QueryMethods

и про perload ещё можно, да

Максим
08.02.2018
10:55:49
а быть то как

кроме counter_cache разве нельзя с таким дефолтным скоупом найти здания с н количества квартир? default_scope do eager_load(:building_assignments, :flats) .where('building_assignments.id IN (?) OR flats.building_id = buildings.id', RESIDENTIAL_ASSIGNMENTS) .distinct end

ojab
08.02.2018
10:59:13
можно

Vasiliy
08.02.2018
10:59:33
за дефаулт скоуп ссут на лицо

ojab
08.02.2018
10:59:34
.unscope(:eager_load), очевидно

Максим
08.02.2018
11:00:40
.unscope(:eager_load), очевидно
Called unscope() with invalid unscoping argument ':eager_load'. Valid arguments are :where, :select, :group, :order, :lock, :limit, :offset, :joins, :includes, :from, :readonly, :having

за дефаулт скоуп ссут на лицо
ну а как тут по другому? в базе есть здания и с жилыми и без жилых, для этого проекта нужны только с жилыми

Vasiliy
08.02.2018
11:03:26
кастомный скоуп

Максим
08.02.2018
11:04:16
кастомный скоуп
и каждый раз на кажды запрос его вызывать?

Vasiliy
08.02.2018
11:04:46
дыа

Максим
08.02.2018
11:04:56
but why

why would you do that

Vasiliy
08.02.2018
11:05:57
потому что явное поведение

Страница 1039 из 1594