Entiendo el cambio, pero me da la sensación de que puede provocar algún problemilla si params[:q] es nil. ¿Qué te parece esto?

    if params[:q] && params[:q][:"#{this.to_s}_id_eq"]