В моем проекте я изменил регистрационную форму в Devise, добавив опцию: accept через аксессор (пользователь должен принять условия обслуживания, чтобы зарегистрироваться и т. Д.).Если они не согласны, это не проверяет.
Это вызвало проблему, когда пользователь пытался редактировать данные своей учетной записи, когда он искал: согласие проверки, но я смог добавить ', если'и добавил еще один метод доступа с именем: sign_in, который определен в контроллере (я не мог понять, как заставить модель определить, вошел ли пользователь в систему или нет, помощники devise не будут работать для меня в этом).Соответствующие части моей модели User и users_controller выглядят как ...
user.rb
validates :agree, :term_agreement => TRUE, :unless => :signed_in
users_controller.rb
def update
@user = User.find(params[:id])
if user_signed_in?
@user.signed_in = params[:user]
end
[...]
end
Итак, все работает нормально... проверка "согласен" переопределяет, когда пользователь уже вошел в систему. Однако я должен найти лучший способ переопределить другой сценарий ... когда пользователь сбрасывает свой пароль и ему нужно его сменить.
Я тестировал учетные записи пользователей и пытался сбросить свой пароль на одной учетной записи, однако меня поразила проверка: согласен ... теперь я должен найти способ переопределить это.Я заметил, что в форме «Изменить пароль» есть скрытое значение поля: reset_password_token, однако я попытался: разве что =>: reset_password_token, но это не сработало бы.
Так каков наилучший способ сделать это?Вдобавок к этому, как я могу иметь или / или условие (если только: подписанный_ин или: сброс_пароль и т. Д.) Для этого: разве что предложение?