![]() |
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版本。然后您可以创建
|
![]() |
cluster1 · 采取独立的新行动的好处是什么? 6 月前 |
![]() |
Robert · 使用JSON或哈希时,将NULL替换为NIL 6 月前 |
![]() |
Fred Willmore · Rails控制器不呈现任何模板 1 年前 |
![]() |
Diogo Amaral · 实现API请求的正确方式 1 年前 |
![]() |
Meknassih · 在控制器方法中分配给模型没有任何作用 1 年前 |
![]() |
Michael Ding · Rails上的默认会话到期问题 1 年前 |
|
Flávio · 基于另外两个生成数组 1 年前 |