我有一个users
包含每个用户详细信息的表。我想users
根据条件(例如他们的年龄)创建一个仅包含表中某些行的新表。我如何在 rails 中做到这一点?
问问题
105 次
1 回答
1
您必须创建迁移。在此迁移中,您首先必须创建新表,然后您可以在两个选项之间进行选择。
- 您可以使用模型读取数据,使用 ruby 过滤器方法过滤数据集,然后将剩余模型转换为新模型并保存。但我建议您不要这样做,因为当您删除当前模型后,您将无法稍后执行此迁移。(迁移使用旧模型读取数据,但在代码中不再可用)
您使用纯 SQL:
class XMigration < ActiveRecord::Migration def up execute <<-SQL CREATE TABLE new_table (id INTEGER AUTO_INCREMENT PRIMARY KEY, ...); INSERT INTO new_table (...) SELECT ... FROM old_table WHERE condition; SQL end def down raise ActiveRecord::IrreversibleMigration end end
于 2012-09-25T22:52:54.600 回答