not necessarily a magic.

method2 tersebut muncul karena rails membaca atribut yang dimiliki oleh
tabel 'products' di database.

jika kita membaca lognya, akan kita temukan query
  SHOW FIELDS FROM `products`
yang digunakan activerecord untuk mengetahui atribut2 apa saja yang
dimiliki oleh model Product.

sebagai contoh, jika pada tabel `products` tersebut ditemukan kolom `title`,
maka activerecord akan mendefinisikan method `title=` dan `title` sebagai
instance method Product (kalau di java, getter dan setter nya)

"trik" semacam ini sangat umum dan natural pada bahasa dinamis
semacam ruby, namun akan sulit diimplementasikan pada bahasa
statis seperti java.

keuntungan dari trik ini tentu saja memudahkan developer karena
tidak perlu melakukan banyak konfigurasi yang membosankan
dengan memberikan suatu konvensi yang masuk akal.


2010/1/6 Deny Prasetyo <[email protected]>

>
>
> ada beberapa hal yang secara konsep agak membingungkan saya ketika
> develop rails.
> Ketika menjalankan command generate "scaffold" oleh rails akan dibuatkan
> beberapa file sesuai dengan parameter yang dimasukkan dan ketika
> dijalankan ternyata jalan MULUS dan tanpa hambatan. nah pertanyaannya:
> - Kalau di Java. konsep MVC selalu melibatkan POJO (Plain Old Java
> Object) yang berupa sebuah kelas Java yang memiliki variable2 sesuai
> dengan mapping pada table. Contoh product memiliki variable string
> title, string description dll. Nah yang mengherankan di Rails saya
> menemukan kelas product.rb tapi tidak menemukan sebuah variable member
> sama sekali
>
> class Product < ActiveRecord::Base
> end
>
> sedangkan pada kode bagian lain saya menemukan
>
> <% @products.each do |product| %>
> <tr>
> <td><%=h product.title %></td>
> <td><%=h product.description %></td>
> <td><%=h product.image_url %></td>
> <td><%= link_to 'Show', product %></td>
> <td><%= link_to 'Edit', edit_product_path(product) %></td>
> <td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method
> => :delete %></td>
> </tr>
> <% end %>
>
> nah darimana muncul product.title, product.description dll sedangkan
> variable2 tersebut tidak pernah didefinisikan pada kelas Product.
> it's a kind of magic, but in every magic has a trick behind it.
> Ada yang bisa menjelaskan..
>
> salam
> jasoet
>
>  
>
>


[Non-text portions of this message have been removed]

Kirim email ke