Правильно, думаю, что я решил это, потому что @article еще не был сохранен,
@article.authors.exists?
запускает sql:
[1m[36mCACHE (0.0ms)[0m [1mSELECT 1 FROM `authors` WHERE `authors `.`type` IN ('professional') AND `authors `.`article_id` IS NULL LIMIT 1[0m
То есть возвращается, есть ли авторы без статьи.