首页
/ 倾心打造快速开发利器——The Brick!

倾心打造快速开发利器——The Brick!

2024-05-30 07:33:14作者:范垣楠Rhoda

从任何现有数据库轻松启动Rails应用

欢迎进入一个神奇的世界,这里可以即时运行的Rails应用程序只需一键生成!这个gem会自动创建模型、视图、控制器和路由,并且所有这些都不是一堆原始的辅助文件,而是存储在内存中。最棒的是,当你对数据库进行如添加新表或列的修改时,基础功能会立即可用,无需额外编写代码。对于像列表只读、编辑启用后的布局规则(在线或弹出模态)等通用行为,可以全局设定,同时也可以对每个模型进行更精细的行为调整和默认设置覆盖。

样本:销售数据查看

你可以以多种方式使用The Brick,例如快速浏览现有的数据集,全链路导航关联数据;轻松更新和创建数据,将表格或视图导出为CSV或Google Sheets;导入数据集,即使每一行都涉及到多个目标表;自动生成API端点;逐步创建最小化的辅助应用程序,按需编写文件;尝试各种数据布局,评估给定数据库设计的功能性等等。

我们有来自Deanin的**YouTube视频教程**,为你展示了如何从零开始。非常感谢你的分享!

此外,还有我早期录制的视频教程概述,建议准备好爆米花并开启播放器音量,因为这是一段较长的讲解:

简要概述

The Brick的宗旨是尽可能遵循Rails惯例。因此,模型、控制器和视图被独立处理。你可以选择仅自动化构建模型,然后自己编写控制器和视图,或者让The Brick自动构建一部分资源的控制器和视图,同时允许你在其他部分加入自定义代码。无论你想如何混合搭配,都是可能的。The Brick的目标是自动完成应用程序中更多繁琐而简单的部分,让你能专注于解决更棘手的问题。

默认生成的页面提供每个模型的“索引”和“显示”视图,通过链接展示相关的模型。列出所有记录的“索引”页只需一次数据库查询,避免了常见的“N+1”查询问题。智能JOIN添加策略确保了即使请求多跳远的数据字段,也能优化查询性能。这使开发者免于编写复杂的ActiveRecord查询。直到版本1.0.91,这种方法相当成功,但当涉及自我引用的表,如Employee表上有manager_id字段并使用定制的DSL [name]时,从相关表(如orders)的查询中,员工的名字和其上司的名字可能会显示相同(虽然显然员工和上司在同一个表中是两个不同的记录)。为了修复这个问题,从1.0.92版本开始,采用了一种全新的方法,即在解析Arel的AST树时捕获表别名逻辑,准确追踪与关联名称相对应的关系表。这还带来了一个很酷的功能,即查找复杂ActiveRecord查询的表别名

“显示”页面上,单个记录的CRUD操作可以直接完成。日期和时间字段使用轻量级库“flatpickr”实现弹出日历编辑。

在模型层面,所有主要的ActiveRecord关联都被构建出来,包括has_many和belongs_to,以及has_many :through、Single Table Inheritance(STI)和多态关联。基于数据库中的外键,生成相应的belongs_tos,然后添加与其相反的has_manys。进一步地,如果有仅包含belongs_to字段的表,会被认为是“关联”(或“连接”)表,接着会添加适当的has_many :through关联。比如,如果存在如下关系:

Recipe --> RecipeIngredient <-- Ingredient

首先,在RecipeIngredient上建立两个belongs_to关联,然后反向添加两个对应的has_manys —— 一个是Recipe中的,另一个是Ingredient中的。最后,如果RecipeIngredient被认为是关联表(只要除了这两个外键之外没有其他列,即recipe_id和ingredient_id),那么在Recipe中会自动添加HMT:

has_many :ingredients, through: :recipe_ingredients

而在Ingredient中也会添加另一个HMT:

has_many :recipes, through: :recipe_ingredients

这样,访问http://localhost:3000/recipes时,就可以看到每个食谱以及它所需的全部食材,通过HMT实现。

如果(或两者)的外键在数据库中缺失,可以在初始化文件中添加。例如,如果Recipe和RecipeIngredient之间的外键丢失,可以通过以下方式在初始文件中指定:

::Brick.additional_references = [['recipe_ingredients', 'recipe_id', 'recipes']]

The Brick可以自动生成初始化文件,只需运行rails g brick:install,并在过程中自动推断缺失的外键参考。它基于找到看起来像是适当键名的列名,并在数据类型与主键类型匹配时做出注释掉的建议。通过取消注释你需要的部分(甚至全部),对The Brick来说,这些外键就像是存在的,Rails就会提供参照完整性。

许多其他设置可以在config/initializers/brick.rb中找到。

还有很多有趣的生成器,如果你想从现有数据库生成一套迁移文件,可以运行生成器bin/rails g brick:migrations。同样,可以生成模型文件:bin/rails g brick:models。甚至现有的数据行也可以保存到db/seeds.rb文件中,只需运行bin/rails g brick:seeds。有关这些的更多信息,请参阅1.f,1.g,1.h部分——“自动生成___文件”的章节。

这篇文章无法一一列举The Brick的所有功能和优势,但它已经足够引起你的兴趣,探索这个强大的工具,看看它如何简化你的工作流程。无论是快速浏览数据库结构,还是构建高度互动的应用程序,The Brick都将是你开发过程中的强大盟友。现在就开始你的旅程吧!

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
162
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
96
15
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
199
279
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
16
Git4ResearchGit4Research
Git4Research旨在构建一个开放、包容、协作的研究社区,让更多人能够参与到科学研究中,共同推动知识的进步。
HTML
22
1
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
950
557
risc-v64-naruto-pirisc-v64-naruto-pi
基于QEMU构建的RISC-V64 SOC,支持Linux,baremetal, RTOS等,适合用来学习Linux,后续还会添加大量的controller,实现无需实体开发板,即可学习Linux和RISC-V架构
C
19
5