我需要在我的数据库中创建一个视图。我知道我可以使用ActiveRecord使用create_table方法创建表。我想知道是否有类似create_table的东西,但是会创建一个视图。
答案 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一起使用,但我没有亲自使用它们。