Расширенный поиск в Rails - PullRequest
       9

Расширенный поиск в Rails

1 голос
/ 05 апреля 2010

Я действительно отстой в поисках Rails, кроме самых очевидных. Я всегда прибегаю к SQL, когда все становится более продвинутым, чем

Model.find(:all, :conditions => ['field>? and field<? and id in (select id from table)', 1,2])

У меня есть этот метод:

def self.get_first_validation_answer(id)
a=find_by_sql("
  select answers.*, answers_registrations.answer_text
  from answers_registrations left join answers on answers_registrations.answer_id=answers.id
  where 
    (answers_registrations.question_id in (select id from questions where validation_question=true)) 
    and
    (sale_registration_id=#{id})
  limit 1
").first

a.answer_text || a.text if a
end

Может ли кто-нибудь создать метод поиска, который даст мне то, что я хочу?

С уважением,

Jacob

Ответы [ 3 ]

4 голосов
/ 05 апреля 2010
class AnswersRegistration < ActiveRecord::Base
  has_many :answers
end

id = 123
the_reg = AnswersRegistration.first(
  :joins => :answers, 
  :conditions => '(question_id in (select id from questions where validation_question = true)) and (sale_registration_id = ?)', id)

(непроверенные)

0 голосов
/ 06 апреля 2010

Иногда AR задыхается от сложных вложенных условий, но теоретически вы должны быть в состоянии сделать это:

AnswersRegistration.first(:conditions => { :question => { :validation_question => true },
                                           :sale_registration_id => id },
                          :include => :answer) 
0 голосов
/ 05 апреля 2010

Просто используйте драгоценный камень Searchlogic, если он удовлетворяет ваши потребности. Вот, пожалуйста: http://github.com/binarylogic/searchlogic

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