我正在创建一个表单,然后创建一个用户,并在电子邮件中发送生成的密码。我使用devise作为参考。密码必须是“随机”的,所以SecureRandom.base58(8)
是我生成密码的方式。
到目前为止,我的想法是在用户控制器的创建操作中生成变量,如so - @generated_pass = SecureRandom.base58(8)
然后在视图中调用该变量。
我无法使用的字段是:
当我输入一个可接受的字符串(1个数字,至少1个大写)作为value:
时,表单就会工作,所以我知道这不是表单中断,当我使用这个变量提交时,我得到的问题是没有其他信息的回滚。
我是否声明了错误的变量?我应该创建一个方法,然后以某种方式调用该方法作为值吗?此外,我已经尝试了- <%= f.hidden_field :password, class: 'form-control', value: SecureRandom.base58(8) %>
,但是没有用。
欢迎您的任何建议,谢谢。Rails Rails 5.0.7.2 | -v -v 2.6.4
发布于 2020-05-13 14:49:25
为什么你不在你的模型上使用before_save或before_validation回调?
此类型的数据不应在视图或控制器中进行修改或更改。
在您的用户模型中类似于以下内容:
before_validation :do_before_validation
def do_before_validation
self.password = SecureRandom.base58(8) unless self.password.present?
end
https://stackoverflow.com/questions/61777357
复制