On Apr 3, 7:14 pm, Marcelo de Moraes Serpa <[email protected]>
wrote:
>
> The first though I had was to use STI **but** somehow make AR instantiate
> the object based on a type attribute in a different model/table (in this
> case in the products_suppliers table) so as to make the type vary based on
> the relationship between product and supplier (as a a supplier might be a
> vendor for a product and/or maybe a manufacturer).
>
> The thing is, I tried to monkeypatch AR to add this support to STI, but the
> thing is that I ended up by loosing too much time. I think that I will just
> keep a type field in products_suppliers and save a string value there (maybe
> coming from an enumeration) and define a method in the supplier model to get
> its type (is_vendor?, is_manufacturer)... KIS[S] :)
>

It wouldn't really be STI - it's a pretty basic that a given row in
the database (ie object) has one type - feels like you;d be jumping
through hoops to make AR believe you're doing STI. You might actually
be able to sort of make this work if you did
has_many :suppliers, :through => :product_suppliers, :select =>
'suppliers.*, product_suppliers.type' but you might run into odd
sideeffects.

Fred

> But of course, any suggestions appreciated!
>
> Thanks,
>
> Marcelo.
>
> On Thu, Apr 2, 2009 at 3:32 PM, Frederick Cheung <[email protected]
>
> > wrote:
>
> > On Apr 2, 7:05 pm, Marcelo de Moraes Serpa <[email protected]>
> > wrote:
>
> > > What I would like to happen is, when a supplier is retrieved using the
> > > following command:
>
> > > @suppliers = @product.suppliers.all
>
> > > Somehow hook up AR and look into the type attribute of the
> > > products_suppliers association and for each record, instantiate the
> > correct
> > > class (either Vendor or Manufacturer).
>
> > So for any given row in product_suppliers,  there's a supplier_id.
> > Surely the row in the suppliers table with that id is either a
> > Manufacturor or a Vendor ?
>
> > Fred
>
> > > It's STI, only that the type data is in another realm and is "variable"
> > > (depending on the product).
>
> > > Is there a way to do that with the current STI implementation in Rails
> > > 2.2.2? If not, how could I hook up AR to make it happen? Or do you
> > suggest
> > > something simpler?
>
> > > Any suggestions appreciated.
>
> > > Marcelo.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to