ruby-on-rails - 为 PostgreSQL GENERATED ALWAYS AS 列创建 Rails 迁移

标签 ruby-on-rails ruby postgresql rails-migrations

如何为自动计算列创建 Rails 迁移,如下所示。

    a_column integer,
    b_column integer,
    total1 integer GENERATED ALWAYS AS (a_column+b_column) stored,
    total2 integer GENERATED ALWAYS AS (a_column-b_column) stored,
    total3 integer GENERATED ALWAYS AS (a_column/b_column) stored
); 

我不想使用模型, 因为我想使用来自具有不同技术的另一个系统的同一张表。

最佳答案

您可以在迁移中使用纯SQL

def up
  execute <<~SQL
    CREATE TABLE table_name (
      a_column integer,
      b_column integer,
      total1 integer GENERATED ALWAYS AS (a_column+b_column) stored,
      total2 integer GENERATED ALWAYS AS (a_column-b_column) stored,
      total3 integer GENERATED ALWAYS AS (a_column/b_column) stored
    );
  SQL
end

def down
  drop_table :table_name
end

使用此类迁移时,为了使数据库架构正确,您需要使用 SQL 转储类型(默认类型为 Ruby)。要设置此设置,请将行添加到您的 config/application.rb

config.active_record.schema_format = :sql

之后该模式将保存到db/struct.sql

read more

关于ruby-on-rails - 为 PostgreSQL GENERATED ALWAYS AS 列创建 Rails 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69012432/

相关文章:

ruby-on-rails - Rails respond_with & Rspec Controller : Testing unsuccessful update

ruby-on-rails - ActiveRecord 查询比直接 SQL 慢得多?

ruby - 如何在 Sublime Text 2 中为我的 Gemfile 启用语法高亮显示?

sql - 如何将数据从 Postgres 移动到在 Amazon 的 RDS 上运行的 MySQL?

sql - 对于我的智力来说,太多的 order by、max、子查询

postgresql - 搜索有重音的名字

ruby-on-rails - rails : How do I create a default value for attributes in Rails activerecord's model?

ruby-on-rails - 嵌套模型形成 Rails 3

ruby - Unicorn Rails - 在生产模式下启动时占用 100% CPU

javascript - 来自 Rails 的嵌入式可执行 JS