问题标签 [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 投票
2 回答
1479 浏览

ruby-on-rails - 迁移时不能将数据插入数据库?

我正在使用Rails 3。我不知道内部迁移是否是rails的规则,似乎我无法将数据插入数据库表中。如果有人可以确认是这样。

我尝试了以下事情:

我有两个 ActiveRecord 模型:

我已经生成了一个迁移文件,在我的迁移中:

当我尝试将 default_car 保存到数据库时,我得到了错误,而我的 default_user 的car_id为空。

是不是因为在迁移中,不允许将数据存储到数据库中?

0 投票
1 回答
8672 浏览

ruby-on-rails - 为什么我得到一个 ActiveRecord::Relation 对象?

我试图从数据库中获取汽车实例,

我收到错误消息:ActiveRecord::Relation:0xb6837b54 的未定义方法 `user_name'

为什么我得到一个ActiveRecord::Relation对象,而不是Car对象?可能是什么原因?顺便说一句,我在我的迁移文件中查询了汽车。我正在使用 Rails 3。

0 投票
1 回答
97 浏览

ruby-on-rails - 如何在 Rails 3 中创建新的迁移

如何在 Rails 3 中创建新的迁移?

0 投票
4 回答
76415 浏览

ruby-on-rails - 如何生成迁移以使引用多态

我有一个 Products 表并想添加一列:

我试图通过执行以下操作为此生成迁移:

但我显然做错了。有人可以提出任何建议吗?谢谢

当我在生成迁移后尝试手动放入时,我是这样做的:

它仍然没有工作

0 投票
4 回答
31107 浏览

sql - Rails:用于创建固定长度 char(12) 列的迁移

通过 Rails 迁移定义固定长度的 SQL 列(例如 CHAR(12))的最佳方法是什么?

为什么这不应该由模型处理是因为 char() vs varchar() 的性能,我想避免在数据库中注入原始 SQL。

编辑:我知道 :limit 修饰符,但是该字段仍然是 varchar (这对性能不利)并且不允许最小大小。

0 投票
5 回答
27256 浏览

ruby-on-rails - Rails rake db:migrate 没有效果

我今天制作了一个新的 Rails 3 应用程序,添加了一个简单的迁移,但由于某种原因,当我执行 rake db:migrate 时没有任何反应。它只是暂停几秒钟,然后返回命令提示符,没有任何错误或任何东西。Schema.rb 和数据库保持为空。

任何想法可能会发生什么?我做了很多应用程序,从来没有遇到过这个问题。一切都是完全标准的设置。

0 投票
4 回答
59172 浏览

ruby - 带有添加和删除参考的 Rails 迁移

创建迁移文件后,rails generate migration AddClientToUser我可以像这样编辑我的迁移文件:

这是反转迁移中添加的参考列的正确方法吗?

0 投票
2 回答
1371 浏览

ruby-on-rails - 是否应该将 rails 迁移与 schema.rb 分开提交?

在生成/编写/运行 Rails 数据库迁移之后,是否应该将迁移文件和db/schema.rb版本控制分开提交?

0 投票
1 回答
530 浏览

rails-migrations - 什么会导致 db:rollback 失败?

我正在尝试回滚我的 rails3 数据库(postgresql)几个步骤来进行一些更改。

我今天添加了一个迁移文件。rake db:rollback 成功回滚。

我现在正试图更进一步,但 rake db:rollback 似乎不起作用。

运行 db:rollback 并跟踪,我得到

但没有迹象表明创建已恢复或表已被删除。

我似乎找不到太多关于此的信息,所以我想知道 - 什么会导致 db:rollback 失败?

有人遇到过这种情况么?

0 投票
2 回答
1937 浏览

ruby-on-rails - 长期运行到死亡的迁移 / find_each

使用 PostgreSQL 运行 Rails 3,

我进行了迁移,更新了数百万条小记录。

由于我认为 ActiveRecord 将此类更新包装在事务中,因此“提交”时间很长,占用的内存也很大,而在上面的示例中,每条记录都已“打印”到屏幕上。

那么,我可以在事务之外运行这个 find_each 吗——虽然它很安全——节省大量“提交”时间和内存?

一种ActiveRecord::Base.without_transaction do ... ; 结束我猜:-)

或者:我错了,迁移没有包装到事务中,我看到的只是 SQL 更新语句应用?

编辑:似乎 threre 与事务没有链接,这是我中断迁移后得到的堆栈跟踪,当所有内容都打印在屏幕上并且 RAM 从 500MB 空闲减少到 ~30MB 时:

编辑(2):哇。结果发现它很长,因为 find_each 在迭代后返回所有元素。

我试过了 :

所以它按预期立即归还了控制台。:)

但后来我仍然看到一个奇怪的行为:RAM 没有释放。相反,一旦我退出任期,RAM 仍然暴跌......

也许我的水龙头解决方案不令人满意?还是批量选择吗?在 find_each 之后如何避免批量选择?

谢谢!