переопределение проверки password_digest в rails 3.1 has_secure_password - PullRequest
1 голос
/ 16 октября 2011

Итак, я хочу разрешить пустой пароль_дайджеста в has_secure_password, но, глядя на ActiveModel :: SecurePassword, кажется, что он жестко закодирован:

validates_presence_of     :password_digest

Единственный способ переопределить это, используя патч обезьяны?

Ответы [ 3 ]

0 голосов
/ 09 декабря 2011

Я не думаю, что has_secure_password будет делать то, что вы хотите, как вы обнаружили.

Таким образом, вместо использования has_secure_password, вы можете написать свой собственный, в основном скопировать исходный код и «разветвлять» его, чтобы делать то, что вы хотите - генерировать и проверять пароль, только если #user не равен nil, это то, что звучит как вы хочу.

Или, как предлагает jtomasri, вы можете создать модель Employee и модель User - вы можете использовать функцию ActiveRecord «наследование одной таблицы», чтобы они оба оставались в одной таблице и имели общий суперкласс вы все равно можете получить (например, Account.find, чтобы вернуть сотрудников и пользователей, соответствующих вашим критериям). В некотором смысле это «более чистое» решение, хотя оно увеличивает сложность скрытых вещей ActiveRecord - в прошлом наследование одной таблицы было немного ошибочным, я думаю они ведут себя хорошо в наши дни , (Сам не использовал это в течение некоторого времени).

0 голосов
/ 10 октября 2012

У меня только что возникла связанная проблема, и я использовал оператор: if для проверки.

validates :password ,..., :if => :employee_needs_password?
validates :password_confirmation , ... , :if => :employee_needs_password?

def employee_needs_password?
   # check whatever your condition is and return true/false 
end
0 голосов
/ 17 октября 2011

зачем вам включать has_secure_password, если вам нужен пустой пароль, или зачем вводить пароли, если вы принимаете пустые.В любом случае вы всегда можете реализовать свой собственный метод дайджеста без использования has_secure_password с помощью BCrypt, есть аутентификация Railscast # 250 с нуля, где вы можете увидеть это в действии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...