1

我有一个users包含每个用户详细信息的表。我想users根据条件(例如他们的年龄)创建一个仅包含表中某些行的新表。我如何在 rails 中做到这一点?

4

1 回答 1

1

您必须创建迁移。在此迁移中,您首先必须创建新表,然后您可以在两个选项之间进行选择。

  1. 您可以使用模型读取数据,使用 ruby​​ 过滤器方法过滤数据集,然后将剩余模型转换为新模型并保存。但我建议您不要这样做,因为当您删除当前模型后,您将无法稍后执行此迁移。(迁移使用旧模型读取数据,但在代码中不再可用)
  2. 您使用纯 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 回答