Kalau mau pake parameter, buat method saja.
class User
has_many :owner_products, :class_name => "Product",
:foreign_key => "owner_id"
has_many :supplier_products, :class_name => "Product",
:foreign_key => "supplier_id"
def owner_products_yang_dipost_pada_tahun(thn)
self.owner_products.find :all, :conditions => ['tahun = ?',thn]
end
end
Hadi Sunyoto wrote:
> 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
>