加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails 4下的表单显示上重写SSN?

发布时间:2020-12-17 02:21:32 所属栏目:百科 来源:网络整理
导读:我有一个Rails 4应用程序,我使用 attr_encrypted gem在数据库中以加密形式存储SSN. 我想要做的只是在编辑/显示表单时显示最后4位数字.因此,一旦SSN被保存,用户就无法在表单中看到完整的SSN.所以我试过做以下事情, class PaymentData ActiveRecord::Base attr
我有一个Rails 4应用程序,我使用 attr_encrypted gem在数据库中以加密形式存储SSN.

我想要做的只是在编辑/显示表单时显示最后4位数字.因此,一旦SSN被保存,用户就无法在表单中看到完整的SSN.所以我试过做以下事情,

class PaymentData < ActiveRecord::Base
  attr_encrypted :ssn,key: 'secret'

  alias_method :org_ssn,:ssn
  def ssn
    org_ssn.reverse # just a way of testing if this works
  end
end

我在节目表单上看到的是使用<%= @ payment_data.ssn%>,它运行正常.但是在我使用<%= f.input:ssn%>的编辑表单上,编辑字段预先填充了完整的SSN.

注意:我正在使用simple_form gem作为我的表单,但如果我使用basic,<%= f.text_field:ssn%>语法,我看到完全相同的SSN.

我在这做错了什么?

解决方法

这就是我最终做的,

def obfuscated_ssn
  return ssn unless ssn && ssn.size > 3
  ssn.last(4).rjust(ssn.length,'*')
end

def obfuscated_ssn=(ssn)
  self.ssn = ssn unless ssn.include?('*')
end

这有点hacky,但它显示带有编辑字符串的SSN,但是不会保存带有编辑位*的字符串,以防止错误数据获取数据库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读