【发布时间】:2013-11-05 14:55:12
【问题描述】:
我有一个 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,但如果我使用基本的 <%= f.text_field :ssn %> 语法,我会看到相同的完整 SSN。
我在这里做错了什么?
【问题讨论】:
-
为什么不分别存储和加密完整和部分 SSN?然后在需要时渲染部分 SSN。
-
@claptimes,我已经考虑过了,但是您需要弄清楚如何显示一个字段并提交到一个完全不同的字段
标签: ruby-on-rails forms ruby-on-rails-4 attr-encrypted