首页 / 知识
如何(以及是否)使用初始数据填充Rails应用程序
2023-04-15 07:40:00

How (and whether) to populate rails application with initial data我有一个Rails应用程序,用户必须登录。因此,要使该应用程序可用,系统中必须有一个初始用户才能让第一人登录(然后他们可以创建后续用户)用户)。到目前为止,我已经使用迁移将特殊用户添加到数据库。 问了这个问题之后,似乎我应该使用db:schema:load而不是运行迁移,以便在新的开发计算机上建立新的数据库。不幸的是,这似乎不包括插入数据的迁移,仅包括设置表,键等的迁移。 我的问题是,处理这种情况的最佳方法是什么: 尝试执行rake任务。例如:
使用在每个Rails应用程序中找到的 尽管上面给出的2008年的一些答案可以很好地发挥作用,但它们已经过时了,并且不再是真正的Rails约定。 应使用 就像Ruby文件一样。 为了创建和保存对象,可以执行以下操作: 准备好此文件后,可以执行以下操作 或一步 应该在您的数据库中填充您要在seed.rb 中创建的任何对象。 我建议您不要在迁移中插入任何新数据。相反,仅修改迁移中的现有数据。 对于插入初始数据,我建议您使用YML。在我设置的每个Rails项目中,我都在DB目录下创建一个夹具目录。然后,我为初始数据创建YML文件,就像将YML文件用于测试数据一样。然后,我添加一个新任务以从YML文件中加载数据。 lib / tasks / db.rake:
db / fixtures / users.yml:
这是我最喜欢的解决方案,使用填充器和伪造的ruby: http://railscasts.com/episodes/126-populating-a-database 尝试使用seed-fu插件,它是一个非常简单的插件,它允许您为数据添加种子(并在将来更改该种子数据),还可以让您为特定于环境的数据和所有环境的数据提供种子。 我以为我已经总结了对这个问题的一些很棒的答案,以及我自己的想法,现在我已经阅读了所有这些内容:) 这里有两个不同的问题: 对于(1),从应用程序本身内部设置第一个用户似乎是很多额外的工作,因为从定义上讲,几乎没有使用过该功能。但是,由于它会强制用户设置他们选择的密码,因此它可能会稍微更安全。最好的解决方案是在这两个极端之间:有一个脚本(或rake任务,或其他工具)来设置初始用户。然后可以将脚本设置为在开发过程中自动填充默认密码,并要求在生产安装/部署过程中输入密码(如果您不希望管理员使用默认密码)。 对于(2),似乎有许多好的有效解决方案。瑞克任务似乎是一个好方法,并且有一些插件可以使此操作更加容易。只需查看其他一些答案即可查看这些细节:) 我猜最好的选择是3号,主要是因为这样就不会有默认用户,这是使本来好的安全性无用的好方法。 有关此的出色博客文章: 我使用杰伊推荐的一组特殊夹具,但很快发现自己创建的数据无法直接使用模型(当我使用acts_as_versioned时为未版本化条目) 该Rake任务可以由db-populate插件提供: http://github.com/joshknowles/db-populate/tree/master 考虑使用rails控制台。非常适合一次性管理任务,这些工作不值得花时间来设置脚本或迁移。 在生产机器上:
...然后...
如果要多次生成此初始用户,则还可以在RAILS_ROOT / script /中添加脚本,然后从生产计算机上的命令行或通过capistrano任务运行该脚本。 对于用户和组,应根据应用程序的需求而不是编程的偶然性来定义现有用户的问题。也许您的应用需要管理员;然后预填充。也许不是-然后添加代码以在应用程序启动时优雅地请求用户设置。 在更普遍的问题上,很明显,许多Rails Apps都可以从预先填充的日期中受益。例如,美国地址保留申请可能还包含所有州及其缩写。我相信,对于这些情况,迁移是您的朋友。 我将其保留在迁移中。虽然建议将架构用于初始设置,但这样做的原因是它更快,从而避免了问题。一次额外的数据迁移应该没问题。 您还可以将数据添加到架构文件中,因为它与迁移的格式相同。您将失去自动生成功能。 某些答案已过时。从Rails 2.3.4开始, 中提供了一个名为Seed的简单功能。
它提供了一个新的rake任务,您可以在迁移后使用它来加载数据:
Seed.rb是一个经典的Ruby文件,可以随意使用任何经典的数据结构(数组,哈希等)和迭代器来添加数据:
如果要添加UTF-8字符的数据(在法语,西班牙语,德语等中非常常见),请不要忘记在文件开头添加:
此Railscast是一个很好的介绍:http://railscasts.com/episodes/179-seed-data |
最新内容
相关内容
linux命令中添加用户?
linux命令中添加用户?,系统,密码,软件,用户,命令,信息,目录,用户名,账号,文件夹,linux添加用户名1、打开xshell软件,远程访问您的服务器或虚拟linux储存命令数据?
linux储存命令数据?,系统,工作,地址,信息,标准,命令,工具,实时,数据,分析,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux命令给用户授权?
linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,linux怎样给普通用户设置权限添加用户 添加账号就是在系统中创建linux命令创建用户组?
linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管理,Linux中如何创建用户和用户组linux一条命令不能创建多个用户组查看linux用户命令行?
查看linux用户命令行?,信息,系统,时间,名称,密码,用户,命令,地址,状态,设备,Linux查看所有用户用什么命令输入“cat /etc/passwd”命令查看所linux所有用户命令行?
linux所有用户命令行?,系统,信息,地址,工作,密码,命令,用户,时间,电脑,管理,Linux里怎么用命令查看所有用户1、您好,查看linux下所有用户步骤:第linux用户下的命令是?
linux用户下的命令是?,系统,工作,管理,地址,命令,密码,基础,信息,目录,新增,Linux系统基础操作指令1、linux常用命令有pwd命令、cd命令、ls命linux命令大全数据库?
linux命令大全数据库?,服务,系统,平台,状态,软件,通用,环境,数据,神州,地址,在Linux上用命令怎么连接数据库(linux连接oracle数据库命令)登录linux用户登录的命令?
linux用户登录的命令?,系统,信息,工作,地址,时间,密码,名称,命令,电脑,软件,linux系统添加用户命令是什么?打开xshell软件,远程访问您的服务器linux上数据库的命令?
linux上数据库的命令?,服务,系统,信息,地址,命令,密码,工具,管理,数据,单位,在Linux上用命令怎么连接数据库(linux连接oracle数据库命令)1、登linux命令dm数据库?
linux命令dm数据库?,地址,软件,时间,设备,名字,服务,位置,名称,公司,命令,linux创建dm数据库超时linux/sys下无法新建 方法如下打开c盘,在用户linux关机用户命令?
linux关机用户命令?,系统,工作,信息,状态,管理,命令,基础,目录,用户,功能,linux常用命令及用法1、linux常用命令: pwd命令 该命令的英文解释