Вы можете использовать функцию find_by_sql
для выполнения произвольного SQL, поэтому в вашем случае вы можете сделать:
e = Event.find_by_sql( 'SELECT events.*, users.name as user_name from users, events where user.id = events.uid')
e
теперь будет содержать все события с совпадающими именами пользователей, и вы можете получить доступ к имени пользователя, как и к любому другому атрибуту, например, puts e.user_name
. Конечно, невозможно изменить имя пользователя, поскольку оно было сгенерировано в запросе SQL.
Этот подход может не соответствовать философии Rails в отношении приложений, не зависящих от БД, однако я считаю, что иногда гораздо проще (и, возможно, быстрее) использовать SQL напрямую, чем пытаться достичь того же с ActiveRecord.