我正在做a mass insert la la chris-heald。如果您使用原始SQL直接与数据库交互,您是否需要自己提供created_at
和updated_at
字段,或者您是否可以免费获得postgres字段?我不清楚它是Rails还是postgres在这里进行自动生成。
答案 0 :(得分:5)
ActiveRecord自行设置updated_at
和created_at
值,它不会设置数据库来提供这些值。
如果你通过SQL进行批量插入,那么你有一些选择:
使用Time.now.utc.iso8601
手动分配它们以构建必要的字符串。如果您的时间戳需要更高的精确度,那么您可以使用strftime
代替iso8601
来构建字符串。
让数据库通过设置这两列的默认值来完成它。你可以说:
alter table your_table alter column created_at set default now();
alter table your_table alter column created_at set default now();
添加默认值,然后进行批量导入,然后使用以下方法删除默认值:
alter table your_table alter column created_at drop default;
alter table your_table alter column created_at drop default;
如果您正在Rails中执行所有操作,则可以使用ActiveRecord::Base.connection.execute
将这些ALTER TABLE发送到您的数据库中。