在我的应用中,我试图区分活跃用户和那些已经毕业的用户#34;可以这么说。我正在运行Rails 4,前端与AngularJS绑在一起SPA。
用户在数据库中有一个布尔active
属性(Postgres),如果选择的用户end_year
等于,则我试图自动将其设置为true或大于当年(例如2015年,2016年,2017年等)。一旦用户end_year
小于当前年份(例如2013年,2014年),我希望该布尔值自动切换为false。
不确定我将如何解决这个问题,或者是否有更好的方法来实现区分活跃和"毕业的最终结果"用户。
例如,在以下代码中,我将返回特定组中的所有用户,无论其状态为活动还是非活动状态。我想要的是返回一个尚未“毕业”的特定群组中的所有用户。
def self.participants_by_group(group_id, max=5)
User.find_by_sql(['select users.*
from users, groups
where users.group_id = groups.id
and groups.id = ?
order by name asc limit ?', group_id, max])
end
答案 0 :(得分:1)
这样的事情怎么样:
class User
# rest of your code
def graduated?
end_year >= Date.today.year
end
end
u1 = User.new(end_year: 2014)
u1.graduated? # => false
u2 = User.new(end_year: 2016)
u2.graduated? # => true
要查询活动 User
,您可以使用以下内容:
User.where("end_year >= :current_year", {current_year: Date.today.year})
find_by_sql
的更新将是:
def self.active_participants_by_group(group_id, max=5)
User.find_by_sql(['select users.*
from users, groups
where users.group_id = groups.id
and groups.id = ?
and users.end_year >= ?
order by name asc limit ?', group_id, Date.today.year, max])
end