【问题标题】:Creating devise users from a CSV file - Rails - PG从 CSV 文件创建设计用户 - Rails - PG
【发布时间】:2021-06-23 15:45:27
【问题描述】:

我收到了一个包含电子邮件和密码的 CSV 文件。

我的任务是浏览这个 CSV 文件并使用设计 gem 创建用户。

您可能想知道为什么我会收到别人的电子邮件和密码(我也是),但有人告诉我不要担心。

我的 csv 文件如下所示:

Email,Password,Password_confirmation,,
email1@email.com ,password1,password1,,
email2@email.com ,password2,password2,,
email3@email.com ,password3,password3,, 

我在seeds.rb 文件中编写了以下代码:

require 'csv'
CSV.foreach("db/fixtures/users.csv", :col_sep => ",", :headers => true) do |row|
User.create(email: row['email'], password: row['password'], password_confirmation: row['password_confirmation'])
end

我运行rails db:seed 来创建用户,但没有任何反应,也没有错误消息。

欢迎任何支持。

【问题讨论】:

  • 我不确定你为什么要记录password_confirmation,因为这是一台计算机,而且它不会出错(将相同的文本从一个字段复制到另一个字段)......除非这个是来自用户的原始输入数据,稍后您将检查密码和确认是否匹配......它有一种“糟糕的设计”的感觉
  • 好点!完全不需要,我会删除字段!

标签: ruby-on-rails csv devise pg


【解决方案1】:

首先,将带有实际密码的文件置于版本控制之下并将其导入到seeds.rb 中是一个非常糟糕的主意。为此目的添加一个 rake 任务会更好,该任务接受 csv 文件路径作为参数并在合适的环境中执行一次。

关于代码,CSV 导入中的标题区分大小写,因此如果您通过row['Email']row['Password'] 等获取行值,它将起作用。 另外,请确保填写这些字段足以节省用户,在您的特定模型中可能还有一些其他必填字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多