2010-05-26 5 views
0

Я пытаюсь выяснить, как отобразить счетчик для записей, которые были созданы в таблице с момента последнего пользователя пользователя last_request_at.Ограничение поиска записей из last_request_at

На мой взгляд, я считая notes из question со следующим кодом:

<% unless @questions.empty? %> 
    <% @questions.each do |question| %> 
    <%= h(question.notes.count) %> 
    end 
end 

Это происходит в файле /views/users/show.html.erb. Вместо того, чтобы считать все notes для вопроса, я хотел бы просто подсчитать заметки, созданные с пользователей last_request_at datetime. Я не нуждаюсь в заметках области видимости, чтобы отображать это приложение «новые заметки», просто просто в этом одном экземпляре.

Чтобы выполнить это, я предполагаю, что мне нужно создать переменную в действии show # user и вызвать ее в представлении, но не совсем уверен, как это сделать.

Другая информация вам может понадобиться:

class Note < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :question 
end 


class Question < ActiveRecord::Base 
    has_many :notes, :dependent => :destroy 
    belongs_to :user 
end 

ответ

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) 

Добавление имени сферы не изменяет область по умолчанию.

Смежные вопросы