พอเขียน web app แบบ MVC ไปสักพัก. ผมก็พบว่ามี controller กับ model ที่ผมใช้บ่อยๆ ในหลายๆ app. ตอนจะ share กันถ้าเป็น view คงทำ helper แยกต่างหากได้. หรือถ้าเป็น controller ก็อาจจะทำ component แยกไว้. แต่นี่เป็น controller + model ที่เป็นคู่กันอย่างติดแน่น ผมเรียก controller ไม่รู้ถุกเปล่า เพราะว่า controller ตัวนี่ไม่ได้ต่อกับ view ตรงๆ (คือมีเจตนาจะแยกมันออกจาก view อย่างเด็ดขาด).
เป็นปัญหาที่เอามาจาก Yaitron dictionary และ controller ที่เอาไว้ช่วย query dictionary ออกมา. เดิมที่ใช้ copy ไฟล์เอา. :-P ไม่ได้แยกเป็น package ต่างหาก. ถ้าจะแยกเป็น package ต่างหาก. Ruby on Rails Turbogears Django CakePHP Drupal มีท่าช่วยบ้างหรือเปล่า?
(ผมแอบลองมาท่าถึงแต่ใช้ tapestry http://gotoknow.org/blog/construction/112609 )
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
สร้างเป็น Library ใส่ไว้ใน lib/ สิครับ
หมายถึง Rails? เราเอา model ไปใส่ใน lib ได้เลยใช่เปล่าครับ? Rails จะตามไป load ให้?
เข้าใจว่าจะตาม load ให้ครับ (ถ้าไม่โหลดก็ไปสั่ง
requireในenvironment.rbก็น่าจะได้)แต่เท่าที่ผมเห็น Mephisto เขาใช้ เขาเขียนเป็น Library เล็กๆ ภายใต้ชื่อ
Mephistoแล้วให้ Controller เรียกเอา ในนั้นมีทั้งส่วนของ Route (ยกมาจากroute.rb) หรือส่วนติดต่อกับฐานข้อมูลบางส่วนอยู่ด้วย เข้าใจว่าน่าจะกรณีคล้ายๆ กันลองดูจากไฟล์
mephisto_init.rbกับในmephisto/ใน SVN ดูครับเฮือกเหนือจัด -_-! ขอบคุณครับสำหรับตัวอย่าง :-).
ใน code ที่ใช้ database คือ app/cachers/article_observer.rb เปล่าครับ? ที่เรียกจาก mephisto_init.rb อีกที?
ผมสรุปแบบนี้ได้หรือเปล่า? เอา model หรือ controllers ไปไว้ที่ไหนก็ได้สักที่นึง.แล้วไป hook dispatcher ให้ไปเรียกเอา. (เข้าใจถูกปะครับ?)
observer เอาไว้สำหรับทำงานประเภท
before_safe,after_saveที่ควรจะอยู่ใน Controller ครับ (เช่น Clear Cache ก็ไม่ควรจะอยู่ใน Model :D) ท่ี่น่าจะใกล้เคียงที่สุดน่าจะเจ้าไฟล์taggable_methods.rbนี่ ที่หน้าที่ของมันก็ขึ้นอยู่กับ model Tagเอ พิมพ์ๆ ไป ชักเริ่มไม่แน่ใจเองว่าผมเข้าใจคำถามถูกหรือเปล่าในตอนแรก -_-” แต่ทางที่ผมคิดว่าน่าจะใช้ได้ก็มี
environment.rbแล้วไปrequireไฟล์ Model/Controller จากอีก Application นึงมาใช้โต้งๆขอบคุณครับ ไว้ผมลองทำดู. :-)
ลองทำเป็น plugin ดูสิ
เวลาจะใช้ ก็แค่หย่อนไปไว้ใน project ที่ต้องการ
http://railsforum.com/viewtopic.php?id=682
น่าลองดีครับ. :-) เห็น plugin มันจะไปแก้ behavior ของ Rails แต่ยังไม่เคยเห็นคนใส่ model เข้าไปเลย. แต่ว่าไม่เคยเห็นก็ไม่ใช่ว่าจะใส่ไม่ได้ :-P.
ลองดูอันนี้สิ
http://rails-engines.rubyforge.org/rdoc/login_engine/
ขอบคุณมากครับ. ตรงมาก login มี model ของตัวเองด้วย.