Scenic在Rails中版本化数据库视图脚本。它为ActiveRecord :: Migration添加方法,以在Rails中用Migration版本方式来创建和管理数据库视图。 https://github.com/scenic-views/scenic 使用Scenic,您可以: 将SQL视图的强大功能带到Rails应用程序,而无需将架构格式切换为SQL。 作为额外的好处,您可以在SQL文件中定义视图的结构,这意味着您可以在您选择的编辑器中获得完整的SQL语法突出显示,并且可以在开发期间轻松地在数据库控制台中测试SQL。 提供了版本控制视图的约定,可使您的迁移历史记录在多个环境中保持一致且可逆,并避免在迁移过程中复制SQL字符串或者遗漏执行视图脚本。 Scenic内置适配器支持PostgreSQL。 其他关系型数据库适配器是可配置的(参见Scenic :: Configuration),并且具有其他gem可以提供的最小接口(参见Scenic :: Adapters :: Postgres)。 官方README.md文档介绍如何创建视图脚本,更新或回滚视图,也介绍如何创建和使用view-backed models,以及使用过程中的常见问题(视图缺少主键、定义过期失效等)。最后说明内置PostgreSQL适配器的原因,同时推荐其他关系型数据库适配器。 下面是一个简单的使用例子: 假如想要创建一个名为search_results的视图,您可以使用以下命令创建迁移和相应的视图定义文件: $ rails generate scenic:view search_results create db/views/search_results_v01.sql create db/migrate/[TIMESTAMP]_create_search_results.rb 编辑 db/views/search_results_v01.sql文件,用SQL语句定义您的视图。比如: SELECT statuses.id AS searchable_id, ‘Status’ AS searchable_type, comments.body AS term FROM statuses JOIN comments ON statuses.id = comments.status_id UNION SELECT… Continue Reading Ruby Gem – scenic-views/scenic: Versioned database views for Rails