Пульсация с Devise

Я пытаюсь создать аутентификацию, используя devise с riak в качестве базы данных. Я нашел стратегию ORM для того же https://github.com/frank06/devise-ripple. , все работает нормально, за исключением того, что когда я пытаюсь зарегистрироваться с адресом электронной почты, который уже присутствует в базе данных, он не выдает сообщение об ошибке, а вместо этого перезаписывает существующие данные и обновляет их. Проблема, которую я понял, заключается в том, что ripple обрабатывает .save() иначе, чем активная запись, т.е. когда активная запись выдает ошибку, а Ripple просто перезаписывает ее.


person djd    schedule 25.10.2011    source источник


Ответы (2)


Поскольку в Riak нет концепции уникальных полей, вам придется проверять уникальность на уровне приложения вашего стека.

Я бы сделал это с помощью быстрой функции m/r или даже проверки search/2i для подсчета документов, имеющих значение электронной почты, которое вы проверяете. Все, что выше 0, очевидно, является неудачной проверкой.

person Srdjan Pejic    schedule 11.01.2012

В зависимости от того, как вы используете свои ключи, вы можете установить ключ на хэш адреса электронной почты.

Проверить наличие этой конкретной записи будет так же просто, как запросить этот конкретный документ, и это должно быть намного быстрее, чем карта/уменьшение или поиск.

person Morten    schedule 13.03.2012