そのSQLだと、uはid=1のUserのみからなるコレクションだよ。
(返値も [ ... ] で囲まれている)

u[0] とか u.first とかしてみたらどうか。


includes は 1-N 問題を回避するためのeager loadingを行うもの。
SELECT "users".* FROM "users"
で必要なuser idを調べて、それに基づいて authentication をイッキする。
SELECT "authentications".* FROM "authentications"
WHERE "authentications"."user_id" IN (1, 2, 3, 4, 5)

joins は SQL の JOIN句。

SELECT "users".* FROM "users"
JOIN authentications ON authentications.user_id = users.id