2014-01-03 4 views
0

У нас есть модель пользователя с одним конкретным разделом, который обновляет почтовый ящик пользователя, который должен быть уникальным. Я добавил это как подтверждение, но он выдает ошибки, когда пользователь обновляет свой профиль в другом месте, например, сброс пароля и т. Д.Устранение ошибок проверки правильности Rails

Я не уверен, как спросить, но мне нужно переработать условие if, чтобы использовать эту проверку если почтовый ящик не пуст, и все остальное. Если есть кто-то, кто видел подобную ситуацию и может предложить любую проницательность, мы бы это оценили.

validates_uniqueness_of :rss_mailbox, on: :update, if: -> user { user.rss_mailbox.presence } 
validates :mailbox, exclusion: { in: :reserved_names, message: " %{value} is a reserved mailbox" }, on: :update, if: -> user { user.mailbox } 

ответ

1

Во-первых, я никогда не видел: в опции, используемой с символом раньше, поэтому я не уверен, что он работает. Я не вижу документацию для этого, но это не будет первой «скрытой функцией» в Rails. Я буду вам доверять, что он работает.

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

validates :mailbox, exclusion: { in: :reserved_names, message: " %{value} is a reserved mailbox" }, on: :update, if: -> user { user.mailbox && user.mailbox_changed? } 
+0

Спасибо, функция почтового ящика использует метод обновления пользователя, но так же любой другой раздел. Есть ли способ его изолировать? – tmartin314

+0

О, и да, вариант: срабатывает метод и отлично работает. – tmartin314

+0

приятно узнать об этом: опция. Я не понимаю ваш вопрос о функции почтового ящика и ее изоляции. Проверки, которые вы разместили, изолированы, но я думаю, что вы говорите о чем-то другом. Не могли бы вы разместить дополнительную информацию/код для объяснения? –

Смежные вопросы