Ограничение поиска записями из last_request_at - PullRequest
0 голосов
/ 26 мая 2010

Я пытаюсь выяснить, как отобразить счет для записей, которые были созданы в таблице с момента 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. Я не хочу, чтобы область заметок отображалась в приложении «Новые заметки», просто в этом единственном экземпляре.

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

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

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 Ответ

1 голос
/ 26 мая 2010

Просто создайте именованную область и используйте ее только тогда, когда она применяется:

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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...