On 8/31/07, Felix Halim <[EMAIL PROTECTED]> wrote: > Hmm.. user, hobbies, address bukannya 1 entity? > Kok disavenya terpisah yah?
Bisa saja sih kalau memang mau fine-grained entity model. (mungkin user#1 punya alamat kantor yang sama dg user#2. untuk mengurangi duplikasi, lalu memisah address sebagai entity sendiri) > > Anyway, kalo mau semuanya disimpan dengan benar, kamu butuh yang > namanya transaction yang punya property ATOMIC(all or nothing). Kamu > bisa liat API transaction: > > http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html Jika kita bisa memastikan bahwa ada urutan tertentu di logika menyimpan ke database, maka bisa pula diakali pake Callbacks. class User < ActiveRecord::Base attr_accesor hobby, home_adde ss, office_address def initialize(hobby, haddress, oaddress) #ctor injection style ;) @hobby = hobby @home_address = haddress @office_address = oaddress end #.. #Callbacks! def after_save @hobby.save @home_address.save @office_address.save end end #end class Tinggal di-wrap @user.save didalam transaction. Method-chaining mestinya juga bisa: #user1 sekantor dg user2 @user1.office_address = @user2.office_address #omg, user2 nge-kost di kantor! @user2.home_address = addr1 @user1.office_address.save -- http://andryshuzain.com