How about
votes = Post.
joins(:user).
joins("LEFT JOIN votes ON votes.post_id = posts.id AND votes.user_id = 1").
select("posts.id, posts.title, users.id AS users_id, votes.vote_type")
with a
votes.map {|p| [p.id, p.title, p.users_id, p.vote_type] }
I get
[[1, "Say hello", 1, nil], [2, "Amazing world", 2, 1]]