在我的 Rails 应用程序中,用户可以搜索患者,并选择患者的最大年龄!
在这里您可以看到我的代码,其中仅选择了 patient.birthday 小于或等于最大年龄的患者。
patients = patients.where("birthday >= ?", year(maximal)) if maximal.present?
用户输入的最大年龄为 15 岁,因此我必须将输入转换为日期:
def year(maximal)
a = Date.today
year = a.year - maximal
month = a.mon
day = a.mday
Date.new(year,month,day)
end
现在我的问题: 如果我有例如:
Patient.birthday => 29.09.1994 (表示他 18 岁)
和用户输入最大值 => 18
此用户未显示在列表中,但应显示他。我知道我必须改变我的def year,但我不知道怎么做!也许你可以帮助我谢谢!
更新UPDATEUPDATEUPDATEUPDATEUPDATEUPDATEUPDATEUPDATEUPDATEUPDATEUPDATEUPDATE
好的,我的新代码:
patients = patients.where("#{age(:birthday)} >= ?", maximum) if maximum.present?
和
def age(dobss)
dob = Date.new(dobss)
now = Time.now.utc.to_date
now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1)
end
但现在我得到了错误:
comparison of Symbol with 0 failed
app/models/search.rb:28:in `<'
app/models/search.rb:28:in `new'
app/models/search.rb:28:in `age'