Stylistic exception and bang usage
should the model method be identify! or is identify proper?


You should only end the method name with a bang (!) if the method modifies the object it is called on.  Furthermore, only if there is also another method of the same name without the bang which does not modify the object.  So no, you should not use a bang in your method name.


  return nil vs throw exception


I would take a cue from either ActiveRecord#find or #find_by_*.  The first will throw an exception when given an ID that doesn't exist.  The later will return nil.  Think of it as entering a URL in your browser as opposed to doing a Google search.  With the first, it's expected that you know the exact URL, with the later, it's not and you should get some sort of result or lack of result.  According to what you say, you should be going with throwing exceptions.

However, I would rethink how you're doing things.  I would do this with initialize instead of having to explicitly call populate_data.