如何为自动计算列创建 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
关于ruby-on-rails - 为 PostgreSQL GENERATED ALWAYS AS 列创建 Rails 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69012432/