---
title: "เขียน migration ให้เป็น idempotent"
description: "เมื่อต้องเขียน migration แบบทำลายข้อมูล ให้ใช้ if_exists: true ตอนที่จะลบตาราง และตรวจสอบก่อนว่าตารางมีอยู่จริงเมื่อต้องการเพิ่มหรือลบคอลัมน์…"
canonical: https://oozou.com/til/create-idempotent-migrations-28
locale: th
date: 2020-10-13
topic: ruby-on-rails
---

# เขียน migration ให้เป็น idempotent

> เมื่อต้องเขียน migration แบบทำลายข้อมูล ให้ใช้ if_exists: true ตอนที่จะลบตาราง และตรวจสอบก่อนว่าตารางมีอยู่จริงเมื่อต้องการเพิ่มหรือลบคอลัมน์…

Published: 2020-10-13 · Topic: [ruby on rails](https://oozou.com/th/til-topics/ruby-on-rails) ([markdown](https://oozou.com/th/til-topics/ruby-on-rails.md))

เมื่อต้องเขียน migration แบบทำลายข้อมูล ให้ใช้ *if\_exists: true* ตอนที่จะลบตาราง และตรวจสอบก่อนว่าตารางมีอยู่จริงเมื่อต้องการเพิ่มหรือลบคอลัมน์ ด้วย *ActiveRecord::Base.connection.table\_exists?*

กรณีที่ 1:

```ruby
def up
  drop_table :kittens, if_exists: true
end
```

กรณีที่ 2:

```ruby
def up
  return unless ActiveRecord::Base.connection.table_exists?(:kittens)
  add_column :kittens, :kind, :integer
end
```

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/th/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
