Datamapper; menggabungkan dua model

Setelah hibernasi selama kurang lebih satu minggu, saya kembali lagi ngeblog. Yah boleh dibilang backup data lah, jadi kalo saya lupa tinggal buka blog aja, gak pake ribet lagi cari-cari di mbah google, itupun kalo ketemu, kalo tidak ya siapin tali aja buat bunuh diri.

Jadi begini ceritanya, saya punya dua buah model table seperti di bawah ini :

users
-------
id
nama
institusi_id
umur


institusi
----------
id
nama_institusi
kode_institusi
nilai
tahun_institusi

Dan institusi_id pada table user, adalah foreign key pada institusi table id :

class Institusi
  include DataMapper::Resource
  property :id, Serial
  property :nama_institusi, String
  property :nilai, Integer
  property :tahun_institusi, Integer
  property :kode_instutusi, String
  has n,    :users 
end

class User
  include DataMapper::Resource
  property :id, Serial
  property :nama, String
  property :institusi_id, Integer
  property :umur, Integer
  belongs_to :institusi 
end

Disini saya mau mengambil data dari table user yang umurnya lebih dari 20 dan menggabungkannya kedalam table institusi , sehingga hasilnya menjadi seperti di bawah ini

user_id    nama    institusi_id    kode_institusi   tahun_institusi    umur
12         Badu       356              STKB          	 2010       	38
35         Budi       981              UNSK            	 2013           28

Lalu, bagaimana cara agar saya mendapatkan hasil seperti di atas? Caranya sangat mudah, semuanya bisa dilakukan dengan DataMapper, saya tidak perlu mengeluarkan table organisasi untuk setiap user, semuanya bisa dilakukan dengan otomatis. Lho? bagaimana bisa? ya! saya hanya perlu melakukan User.all titik, itu saja!

Dan secara otomatis, setiap user akanb menempel pada institusi_id yang menempel disana.

User.all(:umur.gt => 25)tu.each do |user|
	p user.id
	#data institusi belum di ambil, hanya direferensikan
	p user.nama
	p user.institusi
	#nah, sekarang dara institusi di ambil
	p user.institusi.id
	#menampiilkan ID institusi
	p user.institusi.kode_instutusi
	#menampilkan kode institusi
	p user.institusi.tahun_institusi
	#menampilkan tahun institusi
	p user.umur
	#menampilkan umur user
end

Viola! Semuanya bisa dilakukan dengan mudah oleh DataMapper , semoga tulisan nyampah ini bisa bermanfaat :D lihat file

rss facebook twitter github youtube mail spotify instagram linkedin google pinterest medium vimeo