我正在尝试找出如何在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
这是我目前拥有的。它在Rails控制台中不起作用。我一辈子都无法想像还有其他方法可以做到这一点。我本来尝试使用二传手,但是如果我这样做的话,attr_encrypted将不再具有魔力。我假设这是因为attr_encrypted本身正在重用setter。
任何有关attr_encrypted加密之前如何格式化的建议都将不胜感激。
答案 0 :(得分:0)
好吧,我知道了。
正在做:
def format_ssn
return if ssn.nil?
self.ssn = ssn.delete!("-")
end
解决了问题