Something like:

    Classification.order(:name).where("(type = 'Topic' and published_policies_count <> 0) or (type = 'TopicalEvent')")

Might be able to leverage arel a bit to de-stringify that and re-use the scopes, but it might be gnarly.