Rails 3 отображает задачи из частичных - PullRequest
0 голосов
/ 25 марта 2011

Мои задачи принадлежат разным моделям, но всегда присваиваются компании и / или пользователю. Я пытаюсь сузить то, что отображается, группируя их по дате due_at, не обращаясь ко многим запросам.

Есть помощник приложения

def current_tasks
  if user_signed_in? && !current_company.blank?
    @tasks = Task.where("assigned_company = ? OR assigned_to = ?", current_company, current_user)
    @current_tasks = @tasks
  else
    @current_tasks = nil
  end
end

Тогда в моем главном окне у меня есть

<%= render :partial => "common/tasks_show", :locals => { :tasks => current_tasks }%>

Моя проблема в том, что в моем классе задач у меня есть то, что вы видите ниже. У меня так же, как область только что названа due_today. когда я пытаюсь current_tasks.due_today, это работает, если я пытаюсь current_tasks.select_due_today, я получаю undefined method "select_due_tomorrow" for #<ActiveRecord::Relation:0x66a7ee8>

def select_due_today
   self.to_a.select{|task|task.due_at < Time.now.midnight || !task.due_at.blank?}
end

1 Ответ

0 голосов
/ 25 марта 2011

Если вы хотите вызвать current_tasks.select_due_today, тогда это должен быть метод класса, что-то вроде этого (перевод вашего Ruby в SQL):

def self.select_due_today
  select( 'due_at < ? OR due_at IS NOT NULL', Time.now.midnight )
end

Или вы можете иметь в значительной степенито же самое, что и область действия, но поместите ее в лямбду, чтобы Time.now.midnight вызывался при вызове области, а не при ее определении.

[отредактировано для переключения IS NULL на IS NOT NULL - этоотражает рубин в вопросе, но не имеет смысла, потому что он отрицает левую сторону значения OR s]

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