Terima kasih banyak pak.

Kalau misalnya saya mau refine searchnya di has_many menggunakan has_many yang 
sudah ada, apakah bisa?

misalnya

class User

  has_many :owner_products, :class_name => "Product",

           :foreign_key => "owner_id"

  has_many :supplier_products, :class_name => "Product",

           :foreign_key => "supplier_id"

end

saya mau tambahkan has_many :owner_products_yang_dipost_pada_tahun tertentu

saya coba tambahkan
has_many :owner_products_yang_dipost_pada_tahun, :source :owner_products, 
:conditions => "tahun = #{id}"
malah muncul error:
NameError : uninitialized constant User::OwnerProductsYangDipostPadaTahun ...

Intinya sih saya mau re-use :owner_products dan dibikin lebih spesifik lagi.


----- Pesan Asli ----
Dari: Marcelinus Gozali <[EMAIL PROTECTED]>
Kepada: [EMAIL PROTECTED]
Terkirim: Rabu, 21 November, 2007 2:31:54
Topik: Re: [id-ruby] belongs_to 2x untuk model yang sama, apa bisa?









  


    
            Saya sih nangkepnya relasi antar product ke usernya one-to-one, 
yaitu 1 

product hanya mempunyai 1 owner dan 1 supplier.

Tapi satu user itu dual role sebagai Owner dan Supplier.



Kalau bener codenya kaya gini:



class Product

   belongs_to :owner, :class_name => "User",

              :foreign_key =>"owner_id"

   belongs_to :supplier, :class_name => "User",

              :foreign_key =>"supplier_ id"

end



class User

  has_many :owner_products, :class_name => "Product",

           :foreign_key => "owner_id"

  has_many :supplier_products, :class_name => "Product",

           :foreign_key => "supplier_id"

end



hadi_indomulti wrote:

> sori mungkin topiknya rada ambigu, ini coba saya jelasin:

> rails 1.2.3, ruby 1.8.6, xp sp2

> 

> sebuah produk adalah milik 1 owner yang dikirim oleh 1 supplier (yang

> mungkin beda orang), owner dan supplier masuk dalam 1 kategori table

> User dan produk masuk dalam table Product

> 

> class Product ...

>   belongs_to :user, :foreign_key => owner_id

>   belongs_to :user, :foreign_key => supplier_id

>  ...

> end



p = Product.find( 1)

p.owner.name

p.supplier.name



asumsi user punya kolom 'name'



> 

> Sepertinya masuk akan dan bisa dikerjakan, Product a punya owner, dan

> punya supplier. Tapi bagaimana dengan class User nya?

> 

> class User ...

>   has_many :product <-- **

>  ...

> end

> 

> ** - dalam kasus ini product itu milik supplier atau milik owner?

> bagaimana dalam saat tertentu saya bisa bilang owner punya x product

> dan dalam saat lain saya juga mau bilang supplier a punya product apa aja.

User 1 sebagai supplier mempunyai product apa saja, codenya

user = User.find(1)

user.supplier_ products



Kalau user yg sama sebagai owner punya product apa saja:

user = User.find(1)

user.owner_products

user.owner_products .size



> 

> Apakah hal itu mungkin? apakah ada cara yang lebih baik?

> 

> Sekian terima kasih



Salam kenal,

Marcel



    
  

    
    




<!--

#ygrp-mkp{
border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
#ygrp-mkp hr{
border:1px solid #d8d8d8;}
#ygrp-mkp #hd{
color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
#ygrp-mkp #ads{
margin-bottom:10px;}
#ygrp-mkp .ad{
padding:0 0;}
#ygrp-mkp .ad a{
color:#0000ff;text-decoration:none;}
-->



<!--

#ygrp-sponsor #ygrp-lc{
font-family:Arial;}
#ygrp-sponsor #ygrp-lc #hd{
margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
#ygrp-sponsor #ygrp-lc .ad{
margin-bottom:10px;padding:0 0;}
-->



<!--

#ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, 
sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;}
#ygrp-vitnav{
padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
#ygrp-vitnav a{
padding:0 1px;}
#ygrp-actbar{
clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
#ygrp-actbar .left{
float:left;white-space:nowrap;}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;font-size:77%;padding:15px 0;}
#ygrp-ft{
font-family:verdana;font-size:77%;border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;}

#ygrp-vital{
background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
#ygrp-vital #vithd{
font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
#ygrp-vital ul{
padding:0;margin:2px 0;}
#ygrp-vital ul li{
list-style-type:none;clear:both;border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
#ygrp-vital ul li .cat{
font-weight:bold;}
#ygrp-vital a{
text-decoration:none;}

#ygrp-vital a:hover{
text-decoration:underline;}

#ygrp-sponsor #hd{
color:#999;font-size:77%;}
#ygrp-sponsor #ov{
padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;margin:0;}
#ygrp-sponsor #ov li{
list-style-type:square;padding:6px 0;font-size:77%;}
#ygrp-sponsor #ov li a{
text-decoration:none;font-size:130%;}
#ygrp-sponsor #nc{
background-color:#eee;margin-bottom:20px;padding:0 8px;}
#ygrp-sponsor .ad{
padding:8px 0;}
#ygrp-sponsor .ad #hd1{
font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;}
#ygrp-sponsor .ad a{
text-decoration:none;}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;}
#ygrp-sponsor .ad p{
margin:0;}
o{font-size:0;}
.MsoNormal{
margin:0 0 0 0;}
#ygrp-text tt{
font-size:120%;}
blockquote{margin:0 0 0 4px;}
.replbq{margin:4;}
-->








      ________________________________________________________ 
Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda! Kunjungi 
Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/

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

Kirim email ke