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

Kirim email ke