Я пытаюсь выяснить, как изменить атрибут, прежде чем 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.