私は次のものを持っています:
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
つまり、Carには1つのライセンスを持つ1人のドライバーがいます(ライセンスは多態的です。この場合、他のオブジェクトに関連付けることができるので、この場合だけ言いましょう)。
ルート.rbで私は持っています:
resources :cars do
resource :driver do
resource :license
end
end
ライセンスを提示したいのですが。ルートファイルの「show」は次のとおりです。
GET /cars/:car_id/driver/license(.:format) {:action=>"show", :controller=>"licenses"}
私のライセンスコントローラーには、次のものがあります。
def show
@license = @licensable.licenses.find(params[:id])
# continues.......
問題は、ドライバーがライセンスと関係があるにもかかわらず、ルートのために@licensableがCarとして出くわすことです。車はライセンスとは関係がないため、コードは機能しません。コントローラーを変更するか、ルートを変更する必要があると思います。