有两个表,一个 user 表,一个 user 状态配置表,基本信息如下
users
settings
users 表中的 attend_at 表示 user 注册加入的时间,activated_at 是用户激活账号的时间,激活以后才能正常使用
settings 中的 activate_duration 限制用户成功加入后多少分钟内需要激活账号,超过则不允许激活
比如 user1 的激活最晚时间就是 User.first.attend_at + 80.minutes
需求是要列出现在(Time.now)还有激活机会的 users 有哪些。
请问要实现这个需求,在 ActiveRecord 中使用 scope 应该怎么写?
伪代码如下
class User < ApplicationRecord
belongs_to :settings
scope :can_activates, -> {
where(:activated_at => nil).joins(:settings).where(:attended_at > # settings.activate_duration.minutes.ago # )
}
end
求解惑:scope 的 lambda 应该怎么实现?万分感谢🙏!