如何为自动计算列创建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/structure.sql
请阅读更多