ActiveRecord如何知道实例模型是否属于其中一个类范围?

时间:2012-11-16 11:49:04

标签: ruby-on-rails-3 activerecord

我的ActiveRecord类中定义了一个范围,让我们说:

class Book < ActiveRecord::Base
  scope :old, where( "published_at < ?", 1.year.ago )
end

我想问这个类的任何实例是这样的:

book.old?

有没有办法在不重复where定义的情况下执行此操作?

1 个答案:

答案 0 :(得分:4)

使用您的范围在数据库上运行另一个查询:

Book.old.exists?(book.id)

如果你想在多个地方重复使用它,最好实现一个方法:

def old?
  Book.old.exists?(id)
end

book.old?