问题标签 [rails-migrations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
18392 浏览

ruby-on-rails - 将使用 Rails 迁移删除与该列关联的索引的列

在 Rails 2 中,使用 Rails 迁移删除列是否也会更改/删除与该列关联的索引?如果不是,那么您还必须手动更改/删除每个索引,难道不应该自动化吗?

谢谢(来自 Rails 新手)

0 投票
1 回答
5316 浏览

ruby-on-rails - rails3迁移中的“PGError:错误:当前事务已中止”

我在 Rails 3.0.9 下,使用 Ruby 1.9.2 (p290)。使用 Postgresql 9.0.4 和 'pg' gem v0.11.0

问题是 :

我有一个非常简单的迁移,只需使用条件更改列的值:

每个请求都可以在我的 erb 控制台和 pgAdmin SQL 的控制台中完美运行,但是当我运行迁移时,它会说:

如果有人作为一个想法......

这是错误消息堆栈的较大部分:

== MigrateClosets: 迁移 ============================================== ==== 耙子中止!发生错误,此迁移和所有后续迁移均已取消:

0 投票
1 回答
898 浏览

ruby-on-rails - 如何在 Rails 测试数据库中创建 mysql 函数?

我为我的 Rails 应用程序编写了一个 Mysql 函数,并手动将其添加到我的数据库中。当我想使用 Rails UNIT 测试来测试功能时,它会通过如下错误

如何在测试套件之外或开始测试运行时添加功能?

提前致谢,Aaa。

0 投票
3 回答
413 浏览

ruby-on-rails - Rails 观察者、插件和迁移正在竞争,谁赢了?

我们刚刚在 Rails 应用程序中添加了几个观察者。现在,当从头开始运行迁移时,我们会收到一个错误,指出表不存在(呃,我们还没有迁移)。抛出该错误是因为正在加载模型中的插件,该插件要求提供 column_names。

我假设观察者导致模型被加载,因为当我们在 application.rb 中注释掉观察者行时,不会引发错误。

如何在不加载观察者和模型的情况下运行迁移?

或者

如何以在运行迁移时不会引发错误的方式在插件中请求 column_names?

0 投票
1 回答
164 浏览

activerecord - ActiveRecord 迁移多个数据库

我需要将当前架构中的一些表移动到不同的数据库,因为我需要关闭这些表的二进制日志,而 Mysql 不允许关闭特定表的二进制日志。

所以我想知道我是否可以在同一个项目中的两个不同模式上运行迁移。

0 投票
21 回答
104757 浏览

ruby-on-rails - 将时间戳添加到现有表

我需要将时间戳 ( created_at& updated_at) 添加到现有表中。我尝试了以下代码,但没有成功。

0 投票
4 回答
7584 浏览

ruby-on-rails - 如何将序列添加到迁移并在模型中使用它们?

我想要一个Customer带有普通主键和另一列来存储自定义“客户编号”的“”模型。此外,我希望数据库处理默认客户编号。我认为,定义一个序列是最好的方法。我使用 PostgreSQL。看看我的迁移:

如果您知道添加序列的更好的“类似rails”的方法,让我知道会很棒。

现在,如果我做类似的事情

该字段customer_no未预先填充序列的下一个值(应为 1002)。

你知道整合序列的好方法吗?或者有什么好的插件吗?为所有答案干杯!

0 投票
2 回答
2517 浏览

mysql - Rails 迁移:使用动态代码的 update_all 是可能的吗?

我想在表格中添加一个新字段。

我的用户模型中的新“secret_code”字段应该等于 Digest::SHA1.hexdigest([Time.now, rand].join)[1..12]。

我要做的是生成一个迁移,该迁移会将字段添加到表中,并使用(某种)唯一的“secret_code”填充我现有的用户。

问题在于,此迁移使用相同的密码填充所有现有用户!

一种解决方案是不使用 update_all 并运行一个循环来获取每个用户并向每个用户发送更新,但在这种情况下,我的迁移将非常缓慢。

有没有办法将“唯一”随机值发送到 update_all 方法?

谢谢,奥古斯托

0 投票
2 回答
1189 浏览

ruby-on-rails-3.1 - Ruby on Rails 3 教程中的错误,第 13 章

我将 Rails 3 教程中的“示例应用程序”更新到 rails 3.1。一切都很顺利,除了当我使用该网站并且登录用户尝试关注/取消关注另一个用户时,我从日志中收到以下消息:

该操作应该可以工作,因为这是我第一次创建该关联。出现该错误后,我需要重新启动服务器才能返回给我的用户,否则服务器会继续抛出异常。这是一个示例:

所以,重启后回到我的用户,我可以看到记录已经创建了。但是,如果我尝试删除该关系,则会从该日志文件中收到以下错误:

同样,如果我回到用户页面,我可以看到该关系已被删除。看起来好像无缘无故抛出异常。事实上,如果我对以下/关注者关系进行 rspec-test,一切正常。此外,使用 rails 3.0 的 sample_app 版本运行良好。

在 rails 3.1 的上下文中,其中一个 gem 是否有可能存在错误?这是我的 Gemfile 的列表,以防万一:

提前致谢,

0 投票
2 回答
253 浏览

ruby-on-rails - Rails/MySql 合并迁移

我有一个在 MySql DB 上运行的 Rails 应用程序。

有没有办法合并迁移?例如:

假设我有一个非常大的表members,我创建了一个迁移以name向该表添加列,稍后我创建另一个迁移,该迁移添加另一个字段address并向该address字段添加索引。

当我现在运行迁移时,它将更改表 3 次:添加name、添加address和添加索引。并且在每一次,alter table 命令实际上都会创建一个新表,将所有数据复制到其中并删除旧表。

在我的例子中,members表非常大,超过 10M 的记录,所以每次修改需要几个小时。

有没有办法将更改合并到一个更改中?