Map.resources + has_many + STI + :only

Hello

I have product model that has a given workflow (given by
state_machine). Then I have 2-3 versions of product that have a
slightly different workflow. Since state_machine has a elegant way of
handling class inheritance (compared to aasm), I have 2-3 models that
inherit from Product. (ProductOne, ProductTwo, etc). The Product model
has_many transisions. this is a hm relationship that basically handles
all transisions/events RESTfully. I also get transision logging by
having this transision model.

My question is how this is implemented as DRY as possible in
routes.rb. this is how my routes.rb looks like today:

map.resources :products do |product|
product.resources :transisions, :only => [ :index, :new, :create ]
end
map.resources :product_one, :as => ‘products’, :controller =>
‘products’ do |product|
product.resources :transisions, :only => [ :index, :new, :create ]
end
map.resources :product_two, :as => ‘products’, :controller =>
‘products’ do |product|
product.resources :transisions, :only => [ :index, :new, :create ]
end
map.resources :product_three, :as => ‘products’, :controller =>
‘products’ do |product|
product.resources :transisions, :only => [ :index, :new, :create ]
end

Is there a more elegant way to handle this. goal is to have only
“products” routes. I do not want separate routes for each variant of
product.

I tried this but it did not work :-):
map.resources :products, :has_many => [ :transisions => { :only =>
[:index, :new, :create] } ]

/MartOn

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs