Чтобы быстро получить то, что вы хотите, используйте опцию: include, чтобы включить обе другие таблицы при запросе первичной таблицы, поэтому:
some_user_details = User.find(some_id, :include => [:user_details, :user_work_details])
При этом сразу будут загружены все поля из таблиц, поэтому выполняется только один запрос, а затем вы можете делать с объектами все, что вам нужно, поскольку они будут содержать все пользовательские данные.
Я считаю, что это достаточно просто и достаточно, и с этим вы не оптимизируете слишком рано, прежде чем узнаете, где находятся узкие места.
Однако, если вы действительно хотите просто загрузить обязательные поля, используйте также опцию: select в ActiveRecord :: Base find метод:
some_user_details = User.find(some_id, :include => [:user_details, :user_work_details], :select => "id, email, name, address1, city, work_address1")
Хотя мой SQL немного устарел.