在ActiveRecord(Rails)中有什么类似create_view的东西吗?

时间:2010-11-25 21:01:59

标签: ruby-on-rails

我需要在我的数据库中创建一个视图。我知道我可以使用ActiveRecord使用create_table方法创建表。我想知道是否有类似create_table的东西,但是会创建一个视图。

3 个答案:

答案 0 :(得分:7)

没有。这是ActiveRecord“自以为是”的事情之一。它并不关心常见的关系数据库功能,例如视图,外键和其他一些功能。

API documentation包含可供您使用的公共方法列表。

您可以做的最好的事情是在纯SQL中编写CREATE - 语句,然后使用ActiveRecord::Base.connection.execute

答案 1 :(得分:3)

您可以使用schema_plus gem来执行此操作!

https://github.com/SchemaPlus/schema_plus

它实际上是一组宝石,但它包含一个与视图相关的宝石。

它提供了一个create_view方法,您可以将其添加到迁移中 它会将视图转储到schema.rb文件中,以便在rake db:schema:load

执行时重新创建它

此处有更多信息:https://github.com/SchemaPlus/schema_plus_views#user-content-creating-views

答案 2 :(得分:3)

如果您使用的是Postgres,则可以使用Scenic来管理rails应用程序中的数据库视图。与Schema Plus一样,Scenic将为您提供create_view。与Schema Plus不同,Scenic还将提供有关管理视图版本的更多指导以及对物化视图的支持。

如果您使用MySQL,可以使用第三方mysql适配器与Scenic一起使用,但我没有亲自使用它们。