
Смерть
03.05.2018
07:45:33
Такая схема была в 3х конторах
Одна продуктовая и 2 аутсорса

Andrey
03.05.2018
08:06:59
Добрый день!
Можете подсказать по activeadmin'у?
Есть модель, допустим shop.
У нее страничка в админке, и там есть столбец по связи
shop.locationable.name
Как на него повесить фильтр? Чтоб был поиск по локациям
Не могу найти рецепт

Google

Смерть
03.05.2018
08:22:14
Вот честно говоря не помню как это правильно сделать, да и я с телефона, но это делается через них

Andrey
03.05.2018
08:24:08
хм
Попробую поискать в документации scope
@HooFoo Спасибо за наводку

Lavrushchik
03.05.2018
09:25:57
Вопрос по джобам.
How does it work.
Есть несколько файлов джоб.
В enviroment/*.rb указываю NameOfJob.set(wait: число.единица_времени ).perform_later.
Если я укажу одну за одной - они ведь по очереди будут выполняться?

ojab
03.05.2018
09:33:54
зависит от того что и как эти джобы выполняет, в очередь они все сразу попадут

Andrey
03.05.2018
09:37:01
@HooFoo я что-то ничего не нашел про фильтры со scope
Если у тебя есть еще варианты, я буду очень признателен

Смерть
03.05.2018
09:38:52
Ну там вообще под капотом ransack
попробуй в эту сторону покопать

Andrey
03.05.2018
09:39:26
Услышал, спасибо

Dmitry
03.05.2018
10:02:19
Ребят подскажите у меня есть метод в контроллере который данные из базы записывает в xls как мне правильно на него ссылку сделать, чтобы по клику просто файл сохранялся, я сделал так - <%= button_to "Export to xls", action: "export_xls" %> и роут post 'projects/:id', to: 'projects#export_xls', as: 'button'

Google

Dmitry
03.05.2018
10:02:59
и чего то магии не происходит

Lavrushchik
03.05.2018
10:03:34

ojab
03.05.2018
10:03:48
в общем случае — запускать следующую джобу после выполнения предыдущей (или из предыдущей) или .perform_now
но вообще если джобы зависят одна от другой — ты, вероятно, что-то делаешь не так

Lavrushchik
03.05.2018
10:12:30
то бишь, лучше/проще/хз_что, слить пока две джобы в одну, если одна зависит от второй?

ojab
03.05.2018
10:12:49
А зачем их разделять?

Lavrushchik
03.05.2018
10:14:17
прод потом чтоб не положить.
там просто юзается селениум для скрапинга.
а опыта немного маловато, чтобы грамотно написать и не захавать всю память потом в проде так, чтобы не словить cannot allocate memory

Amit
03.05.2018
10:19:29
magic = { true => "Yes", false => "No" }
puts magic[1*2 == 4]
Ребят, а то что в переменной magic можно обозвать хэшем?

rekero
03.05.2018
10:21:11
p magic.class

Amit
03.05.2018
10:21:33

Dmitry
03.05.2018
10:23:55
разобрался там бефор фильтр был

Денис
03.05.2018
10:42:25
Ребятушки, есть тут работающие на MacBook Pro 13 2017 года в базовой комплектации?
Опишите свои ощущения, полет нормальный, хватает для повседневных формошлепных дел?)

Ruslan
03.05.2018
10:42:25
Всем привет, есть вопрос касательно counter_cache, у меня счетчик работает для посчета связи через has_many :organizations, -> { distinct }, through: :inventories, если делать reset_counters то все работает как положено, но проблема в инкременте\декременте, когда меняется промеждуточная запись, как можно отключить\переписать эту логику? Пробовал переопределять increment_counter но ноль на массу. Единственным рабочим решением является у промежуточной модели на after_save каждый раз вычислять счетчик через reset_counters, но может есть вариант получше?


Andrey
03.05.2018
11:15:31
Ребятушки, есть тут работающие на MacBook Pro 13 2017 года в базовой комплектации?
Опишите свои ощущения, полет нормальный, хватает для повседневных формошлепных дел?)
а какой там проц?
Я дома себе собрал дешевенький хакинтошь i3-7100, ssd, 8 озу
И все очень приятно работает, сразу несколько докер контейнеров запущено, редактор, куча вкладок в браузере, телега, и все очень приятно работает
Новые вопрос по ActiveAdmin..
Не подскажите, как получить параметры из урла в ActiveAdmin

ojab
03.05.2018
11:44:19
так же, как и не в activeadmin (i. e. params)?

Andrey
03.05.2018
11:44:28
Не, на params ругается

Ilya
03.05.2018
11:46:17

Andrey
03.05.2018
11:46:53
Ну да, на страничке ActiveAdmin в блоке
controller do
...
end

Google

Alex
03.05.2018
11:51:29
Как с точки зрения архитектуры правильно сделать?
Мне внутри одного action update в контроллере нужно сделать update объекта, а также создать\удалить объекты принадлежащие другой модели.
Вынести в service object?
и там разнести логику по методам?

Ilya
03.05.2018
11:52:14

Pavel
03.05.2018
11:52:29

Ilya
03.05.2018
11:53:32

Andrey
03.05.2018
11:53:54
Решил вопрос так
before_filter do
@scope_index = params['scope']
end
После, в фильтре так
filter :locationable, label: 'Регион', collection: Region.all, if: proc { @scope_index != 'strany' }
Плохо?
В консоль nil возвращал, и странно что работает, если сейчас в контроллере напишу
puts @scope_index он скажет nil

Alex
03.05.2018
11:54:38

Andrey
03.05.2018
11:55:14
У меня не создание удаление, все проще. Фильтр показывать в зависимости от scope
а, это не мне было :D

Pavel
03.05.2018
11:55:52

Alex
03.05.2018
11:56:05

Смерть
03.05.2018
12:11:12

Andrey
03.05.2018
12:22:44
Да я вроде их уже получил, через before_filter и proc
Теперь новая дилема
Сброс фильтров при переключение scope'ов

Anton
03.05.2018
12:24:08
потому что с транзакциями слишком много мороки + они не очень гибкие и постоянно надо из шага в шаг стейт прокидывать

Богдан
03.05.2018
13:05:47
Господа, поделитесь своим docker-compose.yml где идет связка nginx в одном контейнере и rails в другом?

Pavel
03.05.2018
13:08:15

Google

Anton
03.05.2018
13:09:34
ну т.е. одно и то же, просто форма записи немного отличается и все

Pavel
03.05.2018
13:10:12
Посмотрел pull-request. Очень круто ?

Vasiliy
03.05.2018
13:18:22
ребят а кто юзал action_cable_testing с рспеком? как там можно проверить что сообщение встало в очередь?

ojab
03.05.2018
13:44:00
have_broadcasted_to, не?
или тебе именно "в очереди n сообщений"?

Alex
03.05.2018
13:54:27

Vasiliy
03.05.2018
14:03:28
а сам запрос в before

Admin
ERROR: S client not available

Vasiliy
03.05.2018
14:04:08
c have_broadcasted_to надо запрос в блок переносить
что-то типа такого хотелось, только сразу с 1 сравнивать
assert_broadcasts 'messages', 0
ActionCable.server.broadcast 'messages', { text: 'hello' }
assert_broadcasts 'messages', 1

Junk
03.05.2018
14:14:05
Сори за тупой вопрос. Есть модели order has_many postions. Как из выборки по orders получить все привязанные positions?

ojab
03.05.2018
14:15:16
Методом — никак, Postition.where(order: orders) и иже.

Junk
03.05.2018
14:19:22
жаль, значит собреру в массив id-ники всех ордеров и сделаю аналогочно sql where in. хотя попахивает быдлокодом

ojab
03.05.2018
14:20:06
зачем что-то собирать в массив и что мешает сделать то, что написано выше?

Junk
03.05.2018
14:22:23


Alex
03.05.2018
14:26:35
Разбираюсь с dry/transaction
пока если честно тяжело, посоветуйте как разбить на step
Кейс - обновление объекта, проверка объектов другой модели и удаление\создание если требуется.
На входе имеем params в них прилетают данные, которые изменились.
Например: name, description ... etc. Также может прилететь масив item_ids: [] с массивом айдишников, а может и не прилететь.
Также может прилететь, а может не прилететь массив айдишников по которым нужно будет проверить:
Есть ли все эти id-шники в базе (Другой модели), если нет удалить лишние из базы или добавить.
Я посмотрел пример в документации, там создание нового объекта. Все очевидно, берем params, потом валидируем - если все ок - пишем в базу.
В моем же случае парамс не постоянные, надо их проверить, потом проверить объекты другой модели и если все ок - обновить

No
03.05.2018
14:37:35

Google

No
03.05.2018
14:37:56
три step-а как раз

Alex
03.05.2018
14:38:32
даже изменю вопрос: step :update_relation if input.has_key('category_ids')
так можно писать?

No
03.05.2018
14:40:56
если не ошибаюсь - нет, это же противоречит railway пути
но что мешает проверять это внутри step-а?

Anton
03.05.2018
14:41:34
там нет шагов как таковых, при этом можешь условия вешать

Alex
03.05.2018
14:57:01
кое-где спутал названия методов, отредактировать на pastebin не смогу. В целом логика правильная?

Anton
03.05.2018
15:00:41
cкорее ты свой run_logic можешь разбить на шаги и вызывать их с условием в call

Alex
03.05.2018
15:02:26
update_categories(ids, tag) if data.key?('category_ids') внутри call?
или я совсем не правильно понимаю?

Anton
03.05.2018
15:03:00
ага
yield update_categories(ids, tag) if data.key?('category_ids')
по идее, должно сработать

Alex
03.05.2018
15:03:46
Большое спасибо ))) я попробую

Anton
03.05.2018
15:04:09
?

Alex
03.05.2018
15:25:40
tag = yield find_tag(params)
....
def find_tag(params)
Tag.find(params[:id])
end
NoMethodError: undefined method `to_monad' for #<Tag:0x00000000091fe6c8>

Anton
03.05.2018
15:26:31
в монаду оберни
Maybe(ag.find(params[:id]))

Alex
03.05.2018
15:28:17
Maybe(Tag.find(params[:id]))
NoMethodError: undefined method `Maybe' for #<UpdateTag:0x00000000087346c0>

Anton
03.05.2018
15:28:50
include Dry::Monads::Maybe::Mixin

Alex
03.05.2018
15:35:10
еще раз благодарю, в примере было по другому