我正在尝试编写一个选择User类所有成员子集的方法。这是我的尝试:
def self.stats_users(date)
self.where("employee = false AND last_sign_in_at >= ?", date)
end
我尝试以这种方式调用此函数:User.stats_user('2011-04-14')
但是,此方法正在执行此 sql 语句:
SELECT "users".* FROM "users" WHERE (employee = false AND last_sign_in_at >= '2011-04-14')
当它应该简单地执行时:
SELECT * FROM "users" WHERE (employee = false AND last_sign_in_at >= '2011-04-14')
我想我真正的问题围绕着编写作用于类所有成员的方法,以及我对将这些方法放在哪里以及如何调用它们的相对无知。我似乎也很难理解ActiveRecord如何将语句转换为原始sql。
RE SQL
在这种情况下,查询是等效的。
集合的 RE 方法
这个作用域的用途是:
scope :stats_users, lambda { |date|
where("employee = false AND last_sign_in_at >= ?",date)
}