![]() |
1
30
构造您的seed.rb文件,以允许不断创建和更新数据。您不限于只运行一次种子文件,如果您认为它只用于初始部署,您将错过它在设置参考数据方面所能提供的灵活性。 种子文件只是ruby,因此您可以执行以下操作:
如果数据不存在,这将创建新数据,如果发现一些数据,则会更新数据。 如果种子文件的结构正确,还可以创建和更新从属对象。 我建议使用bang-save来确保在无法保存对象的情况下引发异常。这是调试种子的最简单方法。 我使用 seedbank gem 为我的种子数据提供更多的结构,包括按环境设置数据、依赖种子等等。 我不建议对种子数据使用迁移。缺乏灵活性(例如,如何将种子数据仅针对一个环境),也没有真正的方法来建立一组可随时运行以刷新特定环境的可重用数据。您还将有一组迁移,这些迁移没有引用您的模式,并且每次您想要生成新的或更改当前数据时,都必须创建新的迁移。 |
![]() |
2
2
您可以使用迁移,但这不是最安全的选择。
例如,您通过迁移将一条记录添加到表中,然后在将来更改该表的模式。当你将应用程序安装到某个地方时,你将无法运行
种子总是可取的,因为
如果只是为了记录,请选择rails控制台。 |
![]() |
3
2
最好在seed.rb中使用这样的幂等方法,或者在seed.rbs调用的另一个任务中使用:
或者类似于@nmott的:
或使用
|
![]() |
4
1
我一直使用种子文件将实例添加到新表或现有表中。我的解决方案很简单。我只是注释掉db/seeds.rb文件中的所有其他种子数据,这样只有新的种子数据是活动代码。然后跑步
|
|
5
0
我在seed.rb中做了这样的事情
如果列表中给定id的项目已经存在,它将返回一个异常,然后我们删除该项目并重试,直到users_list数组为空。 这样,您就不需要在包含每个对象之前搜索它,但您将无法像@nmott代码中那样更新已经插入的值。 |
![]() |
6
0
而不是改变
您可以创建任意数量的Rake任务。例如,假设您有两台服务器,一台运行应用程序的1.0版本,另一台运行1.1版本,并且您希望将这两台服务器都升级到1.2版本。然后您可以创建
|
![]() |
chris cozzens · 访问哈希/数组内的数据 6 年前 |
![]() |
lifemoveson · Ruby-CSV中的输出文件位于一列中 7 年前 |
![]() |
John Smith · 重写方法Ruby 7 年前 |
![]() |
Dhinakaran · 忽略gems,因为它的扩展未构建[重复] 7 年前 |
![]() |
DaMa NaMu · 输入url时出现错误的新rails安装 7 年前 |
![]() |
anshul410 · 带EX和NX的Ruby REDIS 7 年前 |