2010-11-25 13 views
6

Ich muss eine Sicht in meiner DB erstellen. Ich weiß, dass ich ActiveRecord verwenden kann, um Tabellen mit der Methode create_table zu erstellen. Ich frage mich, ob es etwas Ähnliches wie create_table gibt, aber stattdessen eine Ansicht erstellt.Gibt es etwas wie eine create_view in ActiveRecord (Rails)?

+0

Werfen Sie einen Blick auf diesen Artikel: https://ideamotive.co/blog/materialized-views-ruby-rails-scenic/ – d3m0n

Antwort

6

Nein. Dies ist einer der Punkte, für die ActiveRecord "eigenmächtig" ist. Es interessiert sich nicht besonders für die üblichen relationalen Datenbankfunktionen wie Ansichten, Fremdschlüssel und einige andere.

Die API documentation enthält eine Liste der verfügbaren öffentlichen Methoden.

Das Beste, was Sie tun können, ist schreiben Sie die CREATE -Statement in Plain SQL, und verwenden Sie ActiveRecord::Base.connection.execute.

2

Sie können dazu den Juwel von schema_plus verwenden!

https://github.com/SchemaPlus/schema_plus

Es ist eigentlich eine Gruppe von Edelsteinen, aber es enthält eine, die Ansichten betrifft.

Es bietet eine create_view Methode, die Sie zu Ihren Migrationen hinzufügen und es wird die Ansicht in Ihre schema.rb Datei-Dump, so dass es, wenn Sie rake db:schema:load

tun neu erstellt wird

Mehr Infos hier: https://github.com/SchemaPlus/schema_plus_views#user-content-creating-views

3

Wenn Sie Postgres verwenden, können Sie die Datenbankansichten in Ihrer Rails-Anwendung mit Scenic verwalten. Wie Schema Plus, Scenic gibt Ihnen create_view. Im Gegensatz zu Schema Plus bietet Scenic auch ein wenig mehr Hilfestellung bei der Verwaltung von Versionen der Ansicht sowie Unterstützung für materialisierte Ansichten.

Wenn Sie MySQL verwenden, gibt es mysql-Adapter von Drittanbietern für die Verwendung mit Scenic, obwohl ich sie nicht persönlich verwendet habe.

Verwandte Themen