我无法理解如何根据用户的出生日期对其年龄进行范围搜索。我的数据库仅存储用户 dob。我希望访问者使用高级搜索表单并执行年龄搜索,例如“18-23”、“28-36”等。
我已经尝试了一些东西,但似乎都没有。我将范围添加到用户模型、定义最小和最大年龄,以及另一种没有成功的解决方案。也许我得到了一些正确的代码,但没有执行另一部分。我不知道。如果有人可以指导我正确的方向,那就太好了,这样我就可以学习了。
当我根据所选年龄执行搜索时,它会返回所有用户。
搜索型号:
attr_accessible :age, :children, :ethnicity, :career, :gender, :religion, :zip_code, :birthday, :max_age, :min_age, :youngest_age, :oldest_age
def users
@users ||= find_users
end
private
def find_users
users = User.order(:id)
users = users.where(gender: gender) if gender.present?
users = users.where(zip_code: zip_code) if zip_code.present?
users = users.where(children: children) if children.present?
users = users.where(religion: religion) if religion.present?
users = users.where(ethnicity: ethnicity) if ethnicity.present?
users = users.where("birthday >= ? AND birthday <= ?", 80.years.ago + 1.day, 18.years.ago)
users
end
end
搜索表格:
<%= select(@object, :youngest_age, (18..75).to_a) %> to <%= select(@object, :oldest_age, (18..75).to_a) %>