将搜索限制为last_request_at中的记录

时间:2010-05-26 19:30:12

标签: ruby-on-rails ruby scope

我试图弄清楚如何显示自用户的last_request_at以来在表中创建的记录的计数。

在我看来,我使用以下代码计算notes的{​​{1}}:

question

这发生在<% unless @questions.empty? %> <% @questions.each do |question| %> <%= h(question.notes.count) %> end end 文件中。我不想计算问题的所有/views/users/show.html.erb,而只想计算自用户notes日期时间以来创建的注释。我不一定希望范围说明显示这个“新笔记”计数应用程序范围,只是在这一个实例中。

要完成我假设我需要在User#show action中创建一个变量并在视图中调用它,但不确定如何做到这一点。

您可能需要的其他信息:

last_request_at

1 个答案:

答案 0 :(得分:1)

只需创建一个命名范围,然后仅在适用时使用它:

class Note < ActiveRecord::Base
  named_scope :added_since, lambda { |time| {
    :conditions => time && [ 'created_at>=?', time ]
  }}
end

这应该只在提供时间时强制执行条件。如果您提交零时间,则默认行为是范围所有注释。

这样你可以按照以下方式做点什么:

@new_notes = @user.notes.added_since(@user.last_login_at)

添加命名范围不会改变默认范围。