我有以下内容:
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
即,汽车有一个司机,他有一个执照(执照是多态的——我们只是在这种情况下说,因为它可以与其他对象相关联)。
在 routes.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。汽车与许可证无关,因此代码不起作用。我假设我要么必须更改我的控制器,要么更可能更改我的路线。