Rails 7 中的派生属性

问题描述 投票:0回答:1

根据我最近关于此主题的问题,一个建议是使用数据库生成的字段,我认为这是最好的解决方案。然而,我在搜索中找不到太多参考资料或示例。似乎 SQLite 本身支持生成的列(SQLite 文档),但我在 sqlite gem 文档中找不到任何参考:此链接{https://www.rubydoc.info/gems/sqlite3/1.3.11/SQLite3 /Constants/ColumnType} 无处可去。

我通过 Mintbit 找到了这个示例,但是当我在测试迁移中运行相同的语法时,该架构出现了以下错误消息:

# Could not dump table "test_virtuals" because of following StandardError
#   Unknown type 'virtual' for column 'full_name'

任何人都可以指导我应该如何处理数据库生成的字段?

我正在跑步

rails (7.0.8.4)
,这是问题吗?

ruby-on-rails sqlite
1个回答
0
投票

Rails 7.2 中添加了对 SQLite3 中虚拟列的支持,并且在早期版本中不可用。

在 ActiveRecord 7.2 的 变更日志中

向 SQLite3 适配器添加对生成列的支持。

从 SQLite 3.31.0 版本开始支持生成列(存储列和动态列)。这增加了对 SQLite3 适配器的支持。

create_table :users do |t|
  t.string :name
  t.virtual :name_upper, type: :string, as: 'UPPER(name)'
  t.virtual :name_lower, type: :string, as: 'LOWER(name)', stored: true
end
© www.soinside.com 2019 - 2024. All rights reserved.