Изменение атрибута перед шифрованием attr_encrypted - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь выяснить, как изменить атрибут, прежде чем attr_encrypted выполнит его шифрование.

Я хочу удалить тире из числа перед тем, как сохранить его в зашифрованной базе данных.

attr_encrypted :ssn, key: Rails.application.secrets.secret_encrypt_key
validates :ssn, format: { with: /\d{3}-\d{2}-\d{4}/,
                          message: "SSN must be separated by dashes" },
                allow_nil: true
validates :ssn, length: { is: 11 }, allow_nil: true

before_save :format_ssn

def format_ssn
  return if ssn.nil?
  ssn.delete!("-")
end

Это то, что у меня сейчас есть. Это не работает в консоли рельсов. Я не могу на всю жизнь думать о том, как еще добиться этого. Изначально я пытался использовать сеттер, но attr_encrypted больше не делал бы свою магию, если бы я это сделал. Я предполагаю, что это потому, что сам attr_encrypted использует сеттер повторно.

Будем весьма благодарны за любые предложения по форматированию до шифрования attr_encrypted.

1 Ответ

0 голосов
/ 03 июля 2018

Хорошо, я понял это.

делает:

  def format_ssn
    return if ssn.nil?
    self.ssn = ssn.delete!("-")
  end

решает проблему

...