ruby 无法在DEFAULT表达式Rails迁移中使用列引用

odopli94  于 2023-05-06  发布在  Ruby
关注(0)|答案(2)|浏览(109)

错误:PG::FeatureNotSupported:错误:无法在DEFAULT表达式行1中使用列引用:..._at”timestamp,“total”decimal DEFAULT(COALESCE(price,(0)...

class AddTotalToOrderLines < ActiveRecord::Migration[6.1]
def up
  execute <<~SQL
    ALTER TABLE order_lines
    ADD COLUMN total numeric GENERATED ALWAYS AS (COALESCE(price, 0) * 
    COALESCE(quantity, 0)) STORED;
  SQL
end
wribegjk

wribegjk1#

如果你觉得自己快疯了(或者一些谷歌人员发现了这一点),问题是如果你使用的是schema.rb,Rails会将GENERATED列语句转换为DEFAULT列语句。为了让它正常运行,您需要切换到structure.sql方法。

ui7jx7zq

ui7jx7zq2#

也许你有另一个迁移实际上产生了错误。你在那里展示的那个不是:)

相关问题