Je donne les résultats suivants:has_one à une association polymorphique
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
c.-à-voiture a un conducteur qui a une licence (licence est polymorphes - disons que dans ce cas, car il peut être associé à d'autres objets) .
Dans routes.rb J'ai:
resources :cars do
resource :driver do
resource :license
end
end
Je voudrais montrer ma licence. Le « show » dans le fichier des itinéraires est:
GET /cars/:car_id/driver/license(.:format) {:action=>"show", :controller=>"licenses"}
Dans mon contrôleur de licences Je:
def show
@license = @licensable.licenses.find(params[:id])
# continues.......
Le problème est que même si conducteur a la relation de licence, le @licensable vient à travers comme voiture à cause des routes. Car n'a pas de relation avec la licence, donc le code ne fonctionne pas. Je suppose que je dois soit changer mon contrôleur ou plus probablement mes itinéraires.