Build vs New vs Operator New di Ruby on Rails

Di tutorial resmi dari website Ruby on Rails, terdapat contoh penggunaan method build tetapi sama sekali tidak dijelaskan maksudnya apa. Karena kita adalah manusia maka seharusnya minimal memiliki rasa penasaran buat apa sebenarnya gunanya, kan?.

rubyrails

Method build ini ternyata digunakan untuk membuat sebuah objek baru dari kelas yang memiliki hubungan/asosiasi dengan kelas yang menggunakan method build tadi.

Misal ada 2 kelas yang memiliki hubungan one to many.

Secara logika, antara Todo dengan TodoItem mana dulu yang akan dibuat? Apakah Todo terlebih dahulu baru TodoItem atau justru TodoItem dibuat dulu dan Todo belakangan?.

Biar seragam maka saya katakan kalau Todo dibuat pertama dan TodoItem menyusul kemudian.

Setelah todo disimpan pada basis data kemudian akan dibuat todo item dari todo yang baru saja kita buat. Langkahnya tentu saja membuat instance dari kelas TodoItem terlebih dahulu baru kemudian di-save dong. Nah di sini penjelasan build akan menemui intinya.

Menggunakan build, kode yang ditulis adalah seperti ini

Muncul pertanyaan. Jika build pada kasus di atas digunakan untuk menginstantiasi kelas TodoItem menjadi objek, kenapa tidak digunakan method new atau bahkan operator new saja?.

Karena e karena menggunakan build maka automatis nilai foreign key dari todo item yang merujuk ke todo akan dibuatkan untuk kita, tanpa harus mengesetnya secara manual. Selain itu secara automatis pula objek todo item akan dimasukkan ke dalam objek todo sebagai koleksi.

Screen Shot 2015-12-02 at 12.23.47 PM

Gambar di atas membuktikan bahwa nilai foreign key diset secara automatis. Sedangkan gambar di bawah menunjukkan bahwa todo item akan langsung dimasukkan di dalam koleksi dari todo.

build koleksi

Terus bagaimana dengan method new? Ternyata sama saja dengan build ?. Dia automatis mengeset foreign key dan juga memasukkan todo item ke dalam koleksi. 2 Gambar di bawah ini akan berbicara.

new method foreign

new method koleksi

Gambar pertama menunjukkan pengesetan foreign key dan gambar kedua menunjukkan bahwa todo item sudah masuk sebagai koleksi di dalam todo.

Bingung ya kenapa namanya beda namun kegunaannya sama saja?. Tanya saja ke tim Rails ya kenapa bisa begitu yang jelas build dan new memang method yang sama. Coba buka source code dari Rails di https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation.rb dan cari “alias build new” yang artinya adalah build cuma alias dari new.

Sekarang bagaimaina jika menggunakan operator new?. Berarti kita mesti mengeset foreign key secara manual. Kode di bawah ini menunjukkan perbedaannya.

Dan di bawah ini adalah bukti bahwa foreign key memang belum diset.

Screen Shot 2015-12-02 at 12.31.55 PM

Kesimpulannya dua duanya bisa digunakan tetapi build lebih nyaman dan rails way banget.

Semoga bermanfaat, sampai jumpa di tulisan selanjutnya mengenai Rails dan Ruby 😉

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

Leave a Reply

Your email address will not be published. Required fields are marked *