在rails迁移中使用NOW()



有没有办法用NOW((+INTERVAL 1 创建迁移

class AddFields < ActiveRecord::Migration[5.2]
def change
add_column :campaign_groups, :start_at, :datetime, null: false, defaut:->{NOW()}
add_column :campaign_groups, :end_at, :datetime, null: false, default:->{NOW() + INTERVAL 1 DAY}
end
end

当我运行rake-db:migrate时,我得到一个语法错误:

syntax error, unexpected tINTEGER, expecting do or '{' or '('
default:->{NOW() + INTERVAL 1 DAY}
是的。您使用的now()是数据库解释的数据库函数,而不是Ruby代码。您希望将now()now() + interval '1 day'放入数据库,因此Lambda需要返回字符串:
default: -> { 'now()' }
default: -> { "now() + interval '1 day'" }

PS:您在:start_at选项中的default:(原来是:defaut(中有一个拼写错误。

AFAIKnow()now + interval '1 day'表达式是PostgreSQL特有的。如果你使用MySQL,那么你会想要使用current_timestampcurrent_timestamp + interval 1 day:

default: -> { 'current_timestamp' }
default: -> { 'current_timestamp + interval 1 day' }

相关内容

  • 没有找到相关文章

最新更新