Size: a a a

Чат руби-школы

2020 March 25

GG

Gleb Grishakov in Чат руби-школы
Вопрос в том, как
источник

И

Иван in Чат руби-школы
Gleb Grishakov
Указан, но смена пароля не работает в rails-консоли. Точнее, он меняет пароль, но перец не докладывает. Как проверил: поменял пароль, затем отключил в конфиге наличие перца. И все чудесно прологинилось.
А вот если через браузер-интерфейс при смене пароля на соответствующей вьюхе, то да, поменяет.
Фишка в том, что у нас разные модели юзера, одни без проблем поменяют пароль через вьюху, а другим меняет только админ, соответсвенно, через консоль.  А через консоль пароль апдейтится без докладывания туда перца. Надо его как-то по правильному туда подпихнуть
А как делаешь в консоле? Вообще перец просто добавляется в конец пароля перед хэшированием с солью
источник

И

Иван in Чат руби-школы
Но девайс сам должен это делать. Можешь конечно попробовать заапдейтить пароль на password+pepper
источник

GG

Gleb Grishakov in Чат руби-школы
user = User.find_by(first_name: 'Admin')
user.password = 'lolololo'
user.save!


Что-то типа того
источник

GG

Gleb Grishakov in Чат руби-школы
Иван
Но девайс сам должен это делать. Можешь конечно попробовать заапдейтить пароль на password+pepper
это идея, кстати
источник

GG

Gleb Grishakov in Чат руби-школы
но он просто в конец стринги пароля добавляет, а потом только хеш делает?
источник

И

Иван in Чат руби-школы
Gleb Grishakov
но он просто в конец стринги пароля добавляет, а потом только хеш делает?
По идее да
источник

mB

mr Bubble in Чат руби-школы
Paul
По уму надо делать отдельную логику под это все дело, чтобы умела логика с префиксами работать, с резервированием, сквозной нумерацией (если надо)
Что такое резервирование?
источник

P

Paul in Чат руби-школы
это механизм контроля уникальности. чтобы два параллельных заказа не получили один и тот же номер.
источник

P

Paul in Чат руби-школы
используется в случае, когда номер нужно устанавливать новому документу при создании, а не при сохранении
источник

P

Paul in Чат руби-школы
идея в том, что при запросе нового заказа в таблице нумератора создается запись с новым номером, постронным на основании последнего. у этой записи есть булево поле in_use. оно по умолчанию false, если же заказ будет создан, то оно ставится в true
источник

P

Paul in Чат руби-школы
новый номер в таблице нумератора создается с блокировкой таблицы
источник

P

Paul in Чат руби-школы
поэтому можно быть уверенным, что все заказы идут с уникальными номерами
источник

mB

mr Bubble in Чат руби-школы
А, вы про уникальность, у меня номер присваивается при сохранении в бд, я тут думал при сохранении сделать проверку и если такой номер уже занят - еще раз вызывать метод который выдаст следующий номер
источник

mB

mr Bubble in Чат руби-школы
Или если номер присваивается при сохранении это лишнее?
источник

VA

Vsevolod Avramov in Чат руби-школы
mr Bubble
Или если номер присваивается при сохранении это лишнее?
Надо добавить уникальность в БД на это поле. А при сохранении проверять на ошибку уникальности по этому полю (Не activerecord, а БД) и вызывать сохранение заново. Потому что если делать не с помощью сиквенсов, то есть вероятность одновременного создания номеров.
источник

mB

mr Bubble in Чат руби-школы
Vsevolod Avramov
Надо добавить уникальность в БД на это поле. А при сохранении проверять на ошибку уникальности по этому полю (Не activerecord, а БД) и вызывать сохранение заново. Потому что если делать не с помощью сиквенсов, то есть вероятность одновременного создания номеров.
В бд уникальность на этом поле уже есть, эт я догадался) сохранение у меня делается вроде бы правильным способом через if и если оно неудачно то можно обработать ошибку и повторить
источник

VA

Vsevolod Avramov in Чат руби-школы
mr Bubble
В бд уникальность на этом поле уже есть, эт я догадался) сохранение у меня делается вроде бы правильным способом через if и если оно неудачно то можно обработать ошибку и повторить
Надо отлавливать ошибку ActiveRecord::RecordNotUnique https://api.rubyonrails.org/classes/ActiveRecord/RecordNotUnique.html
источник

mB

mr Bubble in Чат руби-школы
Vsevolod Avramov
Надо отлавливать ошибку ActiveRecord::RecordNotUnique https://api.rubyonrails.org/classes/ActiveRecord/RecordNotUnique.html
А этого недостаточно??? - if @order.save
источник

VA

Vsevolod Avramov in Чат руби-школы
mr Bubble
А этого недостаточно??? - if @order.save
Нет. Попробуй сделать: 2.times.map{ Thread.new {Order.create(opts)} }.each(&:join) - И словишь ошибку. Так что надо rescue использовать
источник