ruby-on-rails – 将列添加到表中,并修复Rails中现有记录的值

我想在我的“订单”表中添加一个名为“payment_type”的列.

这是我到目前为止的迁移:

def change
  add_column :orders,:payment_type,:string
end

我想要这个payment_type保存当前在DB中的所有记录的值“normal”.但是,不是为了将来的记录.我想为未来的记录没有认值.我该怎么做?

解决方法

当您只想为所有现有记录设置值时,您可以使用update_all,这比循环遍历所有的顺序实例要快得多,因为它仅使用数据库语句,并且不会实现所有订单:
def up
  add_column :orders,:string
  Order.reset_column_information
  Order.update_all(payment_type: 'normal')
end

def down
  remove_column :orders,:payment_type
end

update_all不调用任何验证或触发器.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...