Rails Action Text:富文本值在数据库中存储于何处?
Action Text 核心疑问解答
1. description 的值存储在哪里?
Action Text 会自动创建一个名为 action_text_rich_texts 的数据表,所有通过 has_rich_text 声明的富文本字段内容都存在这个表里。该表的核心字段包括:
record_type: 关联的模型类名(例如你的Product)record_id: 对应模型实例的主键IDname: 富文本字段的名称(例如这里的description)body: 实际存储的富文本内容(以HTML格式保存)
2. has_rich_text 方法的作用是什么?
- 为模型添加虚拟属性(比如
description),让你可以像操作普通数据库字段一样读写富文本内容 - 自动建立当前模型与
ActionText::RichText模型的一对一关联 - 封装了富文本内容的存储、读取逻辑,无需手动处理关联查询或写入操作
3. 整个机制的运作流程
- 执行
rails action_text:install时,Rails 会生成创建action_text_rich_texts表的迁移文件,执行迁移后该表正式创建 - 在
Product模型中添加has_rich_text :description后,Rails 会动态为模型添加description读取方法和description=写入方法 - 当你给
product.description赋值时,实际是创建/更新一条关联的ActionText::RichText记录,内容存入action_text_rich_texts.body字段 - 读取
product.description时,Rails 会自动查找对应关联的ActionText::RichText记录并返回内容 - 这种设计无需修改原有
products数据表,所有富文本内容统一存储,还能自动处理附件(如图片、文档)的关联存储(附件存于active_storage_blobs和active_storage_attachments表)
内容的提问来源于stack exchange,提问作者mewi
相关产品推荐
相关产品推荐

