名为Post的模型,对应于db中的posts表。 Post.find_within_4_days
可以在过去4天内收到我的帖子。以下所有操作都将基于过去4天的帖子。我希望它可以在某处进行过滤或定义,因此我可以引用它而不是在任何地方重复Post.find_within_4_days
。我怎么做Post模型?
答案 0 :(得分:3)
假设您正在使用Rails 3,您可以使用如下名称范围:
class Post < ActiveRecord::Base
scope :within_4_days, where(# however you find your 4 day old posts #)
end
然后,您可以在任何地方使用Post.within_4_days
。
如果您只希望过去4天的帖子在任何地方,则可以设置默认范围:
class Post < ActiveRecord::Base
default_scope where(# however you find your 4 day old posts #)
end
之后(例如)Post.all
只会返回过去4天的帖子。
答案 1 :(得分:2)
更灵活:
class Post < ActiveRecord::Base
scope :within, lambda { |time| where("created_at > ?", Time.zone.now - time }
end
Post.within(4.days)
答案 2 :(得分:1)
default_scope
和scope
是适合您案例的绝佳选择,
请参阅此wonderful site