REST and STI Design Pattern

Hello,

I am building an ecommerce site that will support pretty complex (and
very different) products. However, there are major portions that will
remain constant (such as associating with a store front-end,
categories, etc) so I don’t want to have to remake those pieces of
functionality for each type of Product.

As an example, I am working with Goods (Product subtype that carries
inventory and varients) and Imports (Product subtype that is completely
customized to be ordered and imported from overseas). Here is what I
have figured out as far as the structure.

For a Good with ID => 1 I would have these resources
goods/1
goods/1/good_varients
products/1/product_stores

And for Import of ID => 2 I would have
imports/2
imports/2/import_suppliers
products/2/product_stores

I think that will work, although linking between these scenarios
becomes problematic as the return from product_stores would need to go
to either goods/1 or imports/1. I would rather not have a conditional
coded into each link as there will be more product types in the future
(and it would not be DRY, etc).

I tried to make a helper that would correctly route based on the
product type, but it would not work with arguments.

This worked:
eval(@product[:type].underscore+’_path) # it generated the path

This did not work:
eval(@product[:type].underscore+’_path(:id =>1)’) #tried other
variations as well

So, I’m completely stumped. Either I need to rethink my design pattern
for my resources or I need to figure out how to dynamically call
resource paths.

Any help would be extremely appreciated, I’ve been staring at this
problem for the past few days.

Dave