活动logging – 查找在今天之前被创build的logging

我想获取created_at字段小于今天(date)的所有logging。 有什么像:

MyTable.find_by_created_at(< 2.days.ago) 

使用标准的ActiveRecord :

 MyModel.where("created_at < ?", 2.days.ago) 

使用底层的Arel界面:

 MyModel.where(MyModel.arel_table[:created_at].lt(2.days.ago)) 

在Arel上使用一个薄层 :

 MyModel.where(MyModel[:created_at] < 2.days.ago) 

使用库squeel :

 MyModel.where { created_at < 2.days.ago } 

另一种方法是在MyModelApplicationRecord使用Arel接口创build一个范围,比如:

 scope :arel, ->(column, predication, *args) { where(arel_table[column].public_send(predication, *args)) } 

范围的示例用法:

 MyModel.arel(:created_at, :lt, 2.days.ago) 

对于所有的预测,检查文档或源代码 。 这个范围并没有打破这个链条。 这意味着你也可以这样做:

 MyModel.custom_scope1.arel(:created_at, :lt, 2.days.ago).arel(:updated_at, :gt, 2.days.ago).custom_scope2 

现在是时候,现在是第二。 所以现在才能find所有的用户

 @users = User.all 

这将在现在之前查找所有用户,并将排除在Time.now之后join的未来用户或用户