как мне перевести это из searchlogic в metwhere в Rails 3?

У меня было следующее в searchlogic:

Todo.contact_id_is(self.id).ascend_by_original_date.done_date_not_null.first

Как бы я сделал это в метагде теперь, когда я в Rails 3? В частности, not_null и сортировка?

Здравствуйте, я немного запутался. Когда я смотрю на именованные области, найденные в мета_поиске (вместо метагде)... это больше того, что я ищу... и теперь метапоиск заменяется поиском....

Как можно выполнить цепной поиск с помощью sql на моих моделях так, как это сделало searchlogic так просто?

...хорошо...теперь похоже, что обыск для форм, но запросы по моделям - это визг? Проверяем это....


person Satchel    schedule 30.09.2011    source источник


Ответы (1)


Похоже, что в метагде нет оператора !=, он был добавлен в sqeel, поэтому вот возможное обходное решение.

Todo.where( { :contact_id => self.id} ).order( :original_date.asc ).where( '"todos"."done_date" NOT NULL' ).first
person Bohdan    schedule 30.09.2011
comment
Ясно.... Я не думаю, что contact_id_is работает....? Я получаю ошибку отсутствия метода.... - person Satchel; 30.09.2011
comment
подождите, вы используете скил вместо этого, я должен использовать скил? Как это поможет? - person Satchel; 22.10.2011
comment
Я получаю сообщение об ошибке, Postgres не обрабатывает NULL? PGError: ОШИБКА: синтаксическая ошибка в NULL LINE 1 или рядом с ней: ... AND todos.asset_id = 1)) AND (todos.done_date NOT NULL) ^ : SELECT COUNT(*) FROM todos WHERE ((todos.asset = 'Email ' И todos.asset_id = 1)) И (todos.done_date NOT NULL) - person Satchel; 22.10.2011
comment
Postgres понимает NULL, но кажется, что использует "todos"."done_date", а не todos.done_date. Попробуйте обновленную версию, пожалуйста. Как я понял из документации Squeel это расширенная версия metawhere. У него больше операторов. - person Bohdan; 26.10.2011
comment
понял, спасибо.... Я использовал то, что вы сделали с метагде.... На самом деле я обнаружил, что not_eq - это то же самое, что и не равно - person Satchel; 26.10.2011