У меня есть следующее:
class Car < ActiveRecord::Base
has_one :driver
end
class Driver < ActiveRecord::Base
belongs_to :car
has_one :license, :as => :licensable
end
class License < ActiveRecord::Base
belongs_to :licensable, :polymorphic => true
end
Т.е. у автомобиля есть один водитель с одной лицензией (лицензия полиморфная - скажем так, в этом случае она может быть связана с другими объектами).
В route.rb у меня есть:
resources :cars do
resource :driver do
resource :license
end
end
Я хотел бы показать свою лицензию. «Показать» в файле маршрутов:
GET /cars/:car_id/driver/license(.:format) {:action=>"show", :controller=>"licenses"}
В контроллере лицензий у меня есть:
def show
@license = @licensable.licenses.find(params[:id])
# continues.......
Проблема в том, что, хотя водитель имеет отношение к лицензии, @licensable выглядит как Car из-за маршрутов. Автомобиль не имеет отношения к лицензии, поэтому код не работает. Я предполагаю, что мне нужно либо сменить контроллер, либо, скорее всего, маршруты.