Дата поиска с условием - PullRequest
0 голосов
/ 29 апреля 2011

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

define_index do
  indexes title, content, manager, note, start_date, end_date

  has created_at, updated_at

  has user_id, :as => :user_id, :type => :integer

  set_property :delta => true
end

Я хочу искать задачи по дате, что может попасть в промежуток между start_date..end_date, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2011

В качестве атрибутов вы должны указывать start_date и end_date, а не поля:

define_index do
  indexes title, content, manager, note

  has created_at, updated_at, start_date, end_date
  has user_id, :as => :user_id, :type => :integer

  set_property :delta => true
end

И затем вы будете использовать диапазоны для ограничения результатов по этим двум атрибутам:

today = Date.today.to_time # or whatever you like
Task.search :with => {
  :start_date => (Time.at(0)..date),
  :end_Date   => (date..Time.at(2 ** 32))
}

Это должно сделать работу - или, возможно, добавить + 1.day ко второму диапазону. Твик как надо.

0 голосов
/ 29 апреля 2011

Похоже на стандартный вызов SQL Active Record.Поскольку вы передаете ему параметры, вы можете сделать запрос хэширования следующим образом:

    tasks = Task.where("start_date > :start_date and end_date < :end_date", {:start_date => start_date, :end_date => end_date})

Удалите его в метод, который предоставляет start_date и end_date, примерно так:получил динамический искатель!:)

...