Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在RubyonRails中对验证后的数据进行加密?_Mysql_Ruby On Rails_Database_Ruby On Rails 4_Devise - Fatal编程技术网

Mysql 如何在RubyonRails中对验证后的数据进行加密?

Mysql 如何在RubyonRails中对验证后的数据进行加密?,mysql,ruby-on-rails,database,ruby-on-rails-4,devise,Mysql,Ruby On Rails,Database,Ruby On Rails 4,Devise,我正在使用Desive进行身份验证、注册。现在我想以加密格式将emailId保存在MySQL中。所以我使用gem'aescrypt' 我的控制器: def create @dashboard_user = DashboardUser.new(dashboard_user_params) @dashboard_user.created_by=current_dashboard_user.username @dashboard_user.company_id=current

我正在使用Desive进行身份验证、注册。现在我想以加密格式将emailId保存在MySQL中。所以我使用gem'aescrypt'

我的控制器:

 def create
    @dashboard_user = DashboardUser.new(dashboard_user_params)
    @dashboard_user.created_by=current_dashboard_user.username
    @dashboard_user.company_id=current_dashboard_user.company_id
    active_ind = ""
    email = @dashboard_user.email

    if params["active"] == nil then
      active_ind = "0"
    else
      active_ind = "1"
    end

    @dashboard_user.active = active_ind
    @dashboard_user.email= AESCrypt.encrypt(email, "password")

    respond_to do |format|
      if @dashboard_user.save
        format.html { flash[:notice] = 'User successfully Created.' and redirect_to action: "index"}
      else
        @dashboard_user.email = email
        format.html { render :new }
      end
    end
  end
当我试图保存用户时,它抛出无效的电子邮件。我删除了模型中电子邮件的验证。即使存在相同的错误。 这是什么问题? 验证后是否有加密数据的方法

提前感谢。

如何验证电子邮件? 您可以使用自定义方法在验证(例如)正则表达式之前对其进行解密。 或者,您可以使用。在您的情况下,\u验证后的
可能很有用:)


您可以使用验证后
回调触发的方法加密数据。此处描述:

您能发布DashboardUser类的一个片段吗?config/initializers/designe.rb中的身份验证密钥是什么?config.authentication\u keys=[:username]@Novaeundefined方法'after\u validation'用于Dashboard Users控制器:我要定义的类?哦,不,是活动的::Record方法!你应该把它放在你的模型里,而不是控制器里:)!将其放入仪表板用户
如何在视图中解密?不客气:)。请记住,下次从数据库获取记录时,密码已经加密。因此验证可能会失败。您应该仅在创建过程中对其进行验证,只需将
on::create
作为参数添加到
validates:email
(现在可以重新启用该参数)
after_validation(on: :create) do
  self.email= AESCrypt.encrypt(email, "password")
end