Use partition
recent, rest = Post.order('published_at DESC').partition{ |e| e[:published_at] != nil }
recent_one = Array.new << recent.first
@posts = recent_one + rest
So, in @posts
the first post will be the most recently published post and the rest will be with published_at
nil