ScenicRails中版本化数据库视图脚本。它ActiveRecord :: Migration添加方法,以在Rails中用Migration版本方式来创建和管理数据库视图。

https://github.com/scenic-views/scenic

使用Scenic,您可以:

  1. SQL视图的强大功能带到Rails应用程序,而无需将架构格式切换为SQL。 作为额外的好处,您可以在SQL文件中定义视图的结构,这意味着您可以在您选择的编辑器中获得完整的SQL语法突出显示,并且可以在开发期间轻松地在数据库控制台中测试SQL
  2. 提供了版本控制视图的约定,可使您的迁移历史记录在多个环境中保持一致且可逆,并避免在迁移过程中复制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
  statuses.id AS searchable_id,
  'Status' AS searchable_type,
  statuses.body AS term
FROM statuses

上面生成的migration文件[TIMESTAMP]_create_search_results.rb包含create_view语句。

class CreateSearchResultsToVersion < ActiveRecord::Migration
  def change
    create_view :search_results
  end
end

运行迁移

$ rake db:migrate

视图在数据库中创建,并更新您的schema.rb文件,同时该操作是可回滚的。

更多信息请参考https://github.com/scenic-views/scenic

封面图片https://github.com/scenic-views/scenic

打赏

Leave a Reply

Your email address will not be published. Required fields are marked *