Sie können dies zwei Orte, Ihre SQL oder in Ihrer Anwendung.
Durch eine SQL-Abfrage:
SELECT * FROM table_a
UNION
SELECT * FROM table_b;
In Ihrer Rails-Anwendung:
a = A.all
b = B.all
ab = a + b
Einfach genug.
UPDATE: Da Sie diese Änderung dauerhaft vornehmen möchten, sollten Sie eine Migration erstellen, die die beiden Tabellen zusammenführen wird. Dadurch wird sichergestellt, dass Rails weiß, was vor sich geht, und Sie können Ihre Produktionsdatenbank ähnlich migrieren. Da Active keine integrierte Tabelle merge hat, würden Sie wie so eine rohe SQL-Abfrage in der Migration durchführen:
class MergeTableAWithTableB < ActiveRecord::Migration
def self.up
execute "INSERT INTO `table_a` (field_1, field_2, field_3) SELECT (field_1, field_2, field_3) FROM `table_b`;"
drop_table :table_b
end
def self.down
raise IrreversibleMigration
end
end
Dann rake db:migrate
in der Befehlszeile laufen diese Aktion durchführen zu lassen.
Dies hat jedoch den Effekt, dass die Zeilen von table_b neu indexiert werden, da das Verschieben in table_a zu widersprüchlichen primären IDs führen würde.
Ich weiß, dass die meisten Neulinge in Rails nicht den Unterschied erkennen, aber bin ich korrekt in der Annahme, dass Sie ActiveRecord mit Rails verwenden, und nicht ein anderes ORM wie Sequel oder DataMapper? – Phrogz
Ja, ich benutze ActiveRecord mit Rails – Tommy