Sunday, May 28, 2006

Rails Memo #3

ความเดิม


วันนี้จะว่าด้วยเรื่อง Ruby บ้าง
(เนื่องจาก Rails ใช้ Ruby ดังนั้นจึงหลีกไม่พ้น ที่เราต้องเรียนรู้ syntax ของ ruby)

หัวข้อที่หลายคนสับสนในตอนเรียน Rails
ก็คือ การเรียกใช้ method ของ Model จาก controller
เช่น สมมติเรามีหน้าจอที่แสดงสินค้าทั้งหมดที่เรามี

ในฝั่ง controller ก็จะเขียนประมาณนี้
def index
@products = Product.find(:all)
end

Product ที่เห็นใน code ก็คือ ชื่อของ Class ที่เราประกาศเป็น model ไว้
ส่วน find ก็คือ class method ของ Product

class method ก็คือ method ที่เรียกใด้จาก Class ตรงๆ
ส่วน instance method ก็คือ method ที่เรียกจาก object
ลองดูตัวอย่าง
class Dog  
def initialize(name)
@name = name
end

def say
"hong"
end

def Dog.myDog()
Dog.new("bogy")
end
end

ในตัวอย่างข้างบน method say ก็คือ instance method
ส่วน method myDog ก็คือ class method
เวลา run ก็จะเป็นแบบนี้
irb(main):033:0> d = Dog.myDog
#<Dog:0x58f14 @name="bogy">
irb(main):034:0> d.say
"hong"


Syntax ของ ruby กำหนดไว้ว่า
ชื่อ class ต้องขึ้นต้นด้วยตัวใหญ่
ส่วนชื่อ method ไม่ได้บังคับ แต่ส่วนใหญ่นิยมใช้ตัวเล็ก

ส่วน Syntax ของการประกาศ class method
มีทั้งหมด 4 แบบใหญ่ๆ
อ่านได้ในเอกสาร ClassMethods
(อ่านถึงตรงนี้ แฟนๆ python คงโห่กันใหญ่แล้ว
อะไรกัน simple แค่นี้ ทำไมต้องเขียนได้ตั้ง 4 วิธี)

Related link from Roti

No comments: