1

users各ユーザーの詳細を含むテーブルがあります。users条件 (年齢など) に基づいてテーブルから特定の行のみを含む新しいテーブルを作成したいと思います。レールでこれを行うにはどうすればよいですか?

4

1 に答える 1

1

移行を作成する必要があります。この移行では、最初に新しいテーブルを作成する必要があり、次に2つのオプションから選択できます。

  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 に答える