
Mikhail
23.09.2016
15:13:07
Ты когда пишешь данные в бд на основе данных пришедших от юзера их нужно валидировать
под свою структуру и ожидания
любые данные не константы желательно валидировать

ojab
23.09.2016
15:14:51
речь, вроде, про аттрибут который мы сами генерируем

Google

ojab
23.09.2016
15:14:59
он не является пользовательскими данными

Mikhail
23.09.2016
15:15:02
Он генерируется на основе данных юзера
ой блядь
как я устал. Ну я же написал выше

ojab
23.09.2016
15:15:24
данные юзера надо проверять, да

Mikhail
23.09.2016
15:15:25
что он генерируется на основе данных пользователя

Vitaliy
23.09.2016
15:15:29
может не до конца вник в проблему - но виртуальный атрибут не решит проблему?

ojab
23.09.2016
15:15:49
wtf виртуальный аттрибут?

Mikhail
23.09.2016
15:15:59
Тут Виталя проблема в том, что аттрибут в модели нельзя изменять в коллбеке before_validation
не феншуй якобы

Vitaliy
23.09.2016
15:16:14
пара методов в модели AR - геттер и сеттер. Его можно валидировать через стандартные AR sexy validations, например.

Mikhail
23.09.2016
15:16:18
friendly_id gem вроде тому подтверждение что не феншуй
ибо аттрибуты он пишет как раз в before_validation

Google

Mikhail
23.09.2016
15:17:52
и чтобы в слуг записались парамы надо запустить валидацию а не сохранение. И не у кого проблем такой коллбек не вызывает
не вижу причины категорично не рекомендовать изменять аттрибуты в before_validation
У нас есть hidden_attribute
он генерируется на основе данных юзера
у нас есть юзер с правами can_change_hidden_attribute
у него в форме есть этот аттрибут
как ты будешь валидировать этот скрытый аттрибут для юзера я хз

ojab
23.09.2016
15:20:04
https://github.com/norman/friendly_id/issues/660

Mikhail
23.09.2016
15:20:20
а вот варить данные до валидации нормально
а че ты в гем скакнул
у тебя аргументы убежали чтоль.

Vitaliy
23.09.2016
15:20:39
Тут, мне кажется, частично страхи те же, что и с другой магией рельс. Пока до конца не понимаем принцип работы - предпочитаем не использовать магию вовсе.

ojab
23.09.2016
15:20:54
ну очевидно что изменение данных перед валидацией может вызывать проблемы

Mikhail
23.09.2016
15:21:10
Ну от контекста

ojab
23.09.2016
15:21:13
поэтому зашёл в issues и нашёл первую попавшуюся проблему из-за этого

Vitaliy
23.09.2016
15:21:25
с турболинками так же, с spring так же, с N+1 проблемой так же

Mikhail
23.09.2016
15:21:35
Все скрытые поля всегда собираю именно в before_validation
остальное в сеттере
если чтото постоянное то можно в before_save

ojab
23.09.2016
15:22:12
если провалидированы входящие данные — мы сами генерируем поле из корректных входящих данных

Google

Mikhail
23.09.2016
15:22:36
ну пользователь может передать не корректные данные
нам надо их проверить же

ojab
23.09.2016
15:22:52
да

Mikhail
23.09.2016
15:23:11
ну вот для пользователя который эти данные не передает, мы собираем сами и отправляем на валидацию
но если пользователь передал данные, например админ, мы пропускаем коллбек и сразу в валидацию
это нормальная практика
а если ты переделываешь данные это можно в setter

Eugene
23.09.2016
15:24:59

ojab
23.09.2016
15:25:23

Сергей
23.09.2016
15:25:32
а что там за оболочка такая странная?

Mikhail
23.09.2016
15:25:39
мы валидируем значение которые пишутся в ДБ
просто они могут собираться нами, а могут указываться пользователем

Mikhail
23.09.2016
15:26:08
у которого есть права записать это поле

ojab
23.09.2016
15:26:19
ну ок

Kam
23.09.2016
15:37:59
А вот я подумал
Без валидации нельзя решить эту проблему
Подключить uri
Спарсить то что вводит юзер
И если нету протокола добавить его

ojab
23.09.2016
15:40:00
да, парсить/проверять надо в валидации

Google

Rustam
23.09.2016
16:37:14

Антон
23.09.2016
16:39:06
а у меня есть две подруги сестры блезняшки рельсовички
у них фамилия Ахмодеева
бе-бе-бе :-Р
очень уж созвучно с Ахматгилаев, скорее всего трудности перевода

Rustam
23.09.2016
16:42:13

Сергей
23.09.2016
16:42:29
я вот тоже сижу и думаю…

Denis
23.09.2016
16:58:31
Всем привет, есть ли способ реализовать такое
Есть страницы и есть категории c friendly_id, вот роуты
resources :pages, only: :show, path: ''
resources :categories, only: [:show, :index], path: ''

Mikhail
23.09.2016
17:00:01
Народ подскажите. Пишу систему букинга. У меня есть расписание на неделю по дням. То есть каждый день недели имеет определенное время посещения. Мне надо бронировать это время и показывать что занято. Но если я буду создавать timetable на каждое время, каждого дня, каждой недели, каждого года, то бд очень быстро наберет миллионы записей.
Как быть?
Антон

Admin
ERROR: S client not available

Сергей
23.09.2016
17:00:56

Mikhail
23.09.2016
17:01:05
все равно это выйдет в гемор

Сергей
23.09.2016
17:01:18
ну так и задача не из простых)

Mikhail
23.09.2016
17:01:31
Да и думаю что пока не наплодил эту бяку, думаю может изящнее решить
Получать расписание. Определять 7 дней вперед с числами и именами дней. Далее получать список броней с выборкой на дней вперед. И мержить полученные данные в мое расписание и только потом рендерить расписание в вью. Проверять
Я просто боюсь что логика проверки станет сложна и будет приличная задержка
так по идее 2 запроса плюс мержить парамы брони в календарь

Сергей
23.09.2016
17:04:07
тебе нужно определить наличие свободных дней ?

Mikhail
23.09.2016
17:04:16
У меня есть расписание

Google

Mikhail
23.09.2016
17:04:20
На неделю
У каждого дня может быть рандомное время посещение
например 8-9 слотов
в 10 в 12 в 14 в 16 и тд
юзер может бронировать это время
Можно тупо создавать на каждое время запись в бд и ставить is_free:boolean

Сергей
23.09.2016
17:05:30
не

Mikhail
23.09.2016
17:05:40
но клиентов будет 1000 например
и это по 10000 записей каждый день
быстро наберу миллионы

Сергей
23.09.2016
17:06:05
воу
10К записей в день?
один и тот же юзер может занять время уже занятое собой?

Mikhail
23.09.2016
17:07:38
ну представь даже сейчас 100 клиентов, у каждого 10-20 контор. Каждая контора в день забирает 8-10 записей если я буду каждое время писать отдельно в табличку
100*10*10

ojab
23.09.2016
17:07:55
А что мешает создавать только записи для забронированных времён и остальное считать свободным?

Mikhail
23.09.2016
17:08:06
календарь

Сергей
23.09.2016
17:08:08

Mikhail
23.09.2016
17:08:21
ну вот например сегодня пятница

Антон
23.09.2016
17:08:22
у меня 6500 уников в день которые генерируют больше 10 записей
на двух инстнсах
10к записей фигня

Сергей
23.09.2016
17:08:47
ну так ты же календарь строишь независимо от занято/свободно
просто ты заполняешь календарь на основе данных из бд