Oh - I misunderstood what was going on here.  Ok, now that I see what's going on I think that this approach is wrong.  The expectation is that the constructor will take an id - we should leave that alone and add a new static Item_Model::find_by_path static factory function that returns a new Item_Model.  That way the constructor API stays simple and it's more obvious what you're requesting when you try to find an item by its path.