在我的Rails 3应用程序中,我试图通过学校名称和与当年相关的毕业日期查找当前学生。我可以为没有毕业日期的用户成功找到(见下文),但我想搜索毕业日期属性小于或大于当前年份的用户。仅供参考,我正在使用PostgreSQL。
我正在使用的字段设置如下:
t.string :high_school
t.date :hs_grad_year
以下是我目前工作的发现:
<%= pluralize(Profile.where(:high_school => "#{@highschool.name}").where("hs_grad_year IS NOT NULL").count, "person") %>
答案 0 :(得分:1)
你想要.where("hs_grad_year < extract(year from current_date)")
。
在Postgres中,current_date
是当前日期(yyyy-mm-dd
),而extract
函数只提取该日期的一部分。您可以在Postgres here中阅读有关日期和时间函数的更多信息。
答案 1 :(得分:1)
Profile.
where(:high_school => @highschool.name).
where("hs_grad_year < ? OR hs_grad_year > ?", Date.today.year, Date.today.year)
答案 2 :(得分:1)
您的代码存在一些问题(从数据库获取记录应该在控制器中完成,而不是在视图中,并且您使用高中名称作为外键而不是id
字段,例子),但要回答你的问题:
Profile.where %'
high_school = ? AND
EXTRACT(year FROM hs_grad_year) < EXTRACT(year FROM current_date)
',
@highschool.name