1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-07 00:58:02 +00:00

Add Add A Generated Column To A PostgreSQL Table as a Rails TIL

This commit is contained in:
jbranchaud
2025-01-30 23:10:23 -06:00
parent 61fc021f52
commit 43c6e08b34
2 changed files with 24 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
_1579 TILs and counting..._
_1580 TILs and counting..._
See some of the other learning resources I work on:
- [Ruby Operator Lookup](https://www.visualmode.dev/ruby-operators)
@@ -946,6 +946,7 @@ See some of the other learning resources I work on:
- [Add A Check Constraint To A Table](rails/add-a-check-constraint-to-a-table.md)
- [Add A Database Index If It Does Not Already Exist](rails/add-a-database-index-if-it-does-not-already-exist.md)
- [Add A Foreign Key Reference To A Table](rails/add-a-foreign-key-reference-to-a-table.md)
- [Add A Generated Column To A PostgreSQL Table](rails/add-a-generated-column-to-a-postgresql-table.md)
- [Add A Reference Column With An Index](rails/add-a-reference-column-with-an-index.md)
- [Add ActiveRecord Error Not Tied To Any Attribute](rails/add-activerecord-error-not-tied-to-any-attribute.md)
- [Add React With Webpacker To A New Rails App](rails/add-react-with-webpacker-to-a-new-rails-app.md)

View File

@@ -0,0 +1,22 @@
# Add A Generated Column To A PostgreSQL Table
As of Rails 7, ActiveRecord supports generated columns for app's backed by a
PostgreSQL database. This is achieved with a `virtual` column.
```ruby
class CreateTags < ActiveRecord::Migration[8.0]
def change
create_table :tags, id: :bigint do |t|
t.string :value
t.virtual :normalized_value, type: :text, as: "lower(value)", stored: true
t.timestamps
end
end
end
```
With a table like this, any time we add a record with a `value`, PostgreSQL
computes and stores the `normalized_value` column based on that.
[source](https://blog.saeloun.com/2022/01/25/rails-7-postgres-support-for-generated-columns/)