Учитывая, что пользователю 30 лет, если он еще не отметил свой 31-й день рождения, ваша логика будет следующая:
today = Date.today
=> Mon, 07 May 2018
aged_30 = today - 31.years + 1.day
=> Fri, 08 May 1987
aged_18 = today - 18.years
=> Sun, 07 May 2000
User.in(gender: gender_group).between(dob: aged_30..aged_18)