ในเรื่อง ทดลอง acts_as_tree feature ของ ActiveRecord (Ruby on Rails)
วันนี้เห็น link tutorial ที่เข้าใจง่ายดี
ก็เลยเอามาลงให้ดูกัน
The Joy of Migrations
ประโยคคำสั่งที่เราสามารถใช้ใน Migration class ก็มี
- create_table
syntax ของ create_table ก็คือcreate_table :test do |t|
t.column :col0, :string
t.column :col1, :text
t.column :col2, :integer
t.column :col3, :float
t.column :col4, :datetime
t.column :col5, :timestamp
t.column :col6, :time
t.column :col7, :date
t.column :col8, :binary
t.column :col9, :boolean
t.column :col10, :int2
end
ตั้งแต่ col0 -> col9 เป็น datatype ที่ ActiveRecord define ไว้แล้ว
ซึ่งมันจะทำการแปลงเป็น datatype จริงๆให้อีกที
โดยขึ้นอยู่กับ Database ที่เราเลือกใช้
ส่วนกรณี col10 เป็น datatype ที่ ActiveRecord ไม่ได้ define ไว้
เวลา generate sql ActiveRecord ก็จะ generate ออกไปตามที่เราพิมพ์เลย
sql ที่ได้จากข้างบน จะหน้าตาดังนี้CREATE TABLE test ("id" serial primary key,
"col0" character varying(255),
"col1" text,
"col2" integer,
"col3" float,
"col4" timestamp,
"col5" timestamp,
"col6" time,
"col7" date,
"col8" bytea,
"col9" boolean,
"col10" bigint)
กรณีที่เป็น varchar เราสามารถกำหนด length ได้แบบนี้t.column :name, :string, :limit=>25
กรณีที่ต้องการกำหนด null, default ก็เขียนดังนี้t.column :col11, :string, :limit=>25, :default=>"blank", :null=>false
ซึ่งจะได้ออกมาดังนี้"col11" character varying(25) DEFAULT 'blank' NOT NULL)
รายละเอียดปลีกย่อยของ create_table ยังมีอีกจำนวนหนึ่ง
ให้ลองดูใน RDoc ของ activeRecord ดู - drop_table
อันนี้ชัดเจน ใช้ drop table - add_column
format ของ add_column เหมือนตอนที่เราเขียนt.column
- remove_column
อันนี้ชัดเจน ไม่ต้องอธิบาย - rename_table
- rename_column
- change_column
เปลี่ยน definition ของ column - change_column_default
- add_index
ตัวอย่างadd_index(:accounts, [:branch_id, :party_id], :unique => true)
- remove_index
No comments:
Post a Comment