对整个 Ruby 类上的所有条目执行 Method(使用 Rails 框架)



我正在尝试编写一个选择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)
}          

相关内容

最新更新