Ruby on rails 在seed.rb文件中创建用户,如何像user.rb那样加密密码?

Ruby on rails 在seed.rb文件中创建用户,如何像user.rb那样加密密码?,ruby-on-rails,Ruby On Rails,My User.rb有一个加密用户密码的before_save回调,它执行以下操作: def set_password self.salt = ... self.encrypted_password = ... end 现在,当我在seed中创建我的用户时,我如何加密密码而不复制我的代码?通常您从数据库中获取已加密的密码并将其转换为seed。不要重新实现它,只需复制所需的值。我关心同样的问题。在我的例子中,我想在数据库中添加一个“admin”帐户,这样用户就不会尝试使用这个名称创

My User.rb有一个加密用户密码的before_save回调,它执行以下操作:

def set_password
   self.salt = ...
   self.encrypted_password = ...

end

现在,当我在seed中创建我的用户时,我如何加密密码而不复制我的代码?

通常您从数据库中获取已加密的密码并将其转换为seed。不要重新实现它,只需复制所需的值。

我关心同样的问题。在我的例子中,我想在数据库中添加一个“admin”帐户,这样用户就不会尝试使用这个名称创建帐户。即使我对密码进行加密,我也必须在数据库中植入这些信息。它必须进入seeds.rb文件,如果我的开发或服务器硬盘被破坏,可能会有人用salt和加密密码找出密码。如果您同意,那么您可以选择一个salt并根据它加密您的密码,然后将加密的密码放入您的seeds文件中

如果这将投入生产,你可能想考虑用随机的盐、随机密码和固定的电子邮件来播种这些帐户。没有人可以访问这些帐户,但您可以重置用户密码。我假设你已经实施了某种密码重置系统


这听起来很痛苦,我知道,但我想不出另一种安全的方法。

但我正在呼叫User.delete\u在它之前,数据库中没有任何内容…它的种子数据。这是我一直在做的,播种随机数据,然后手动进行密码重置。当然,如果有一个更简单、更安全的解决方案就好了,但它是有效的。