Konstruktor zapytań SQL Rails… Lub kreator zapytań ActiveRecord

Muszę uruchomić kwerendę sql jak

<code>sql = 'SELECT * FROM users WHERE id != ' + self.id.to_s + ' AND id NOT IN (SELECT artner_id FROM encounters WHERE user_id = ' + self.id.to_s + ')'
sql += ' AND id NOT IN (SELECT user_id FROM encounters WHERE partner_id = ' + self.id.to_s + ' AND predisposition = ' + Encounter::Negative.to_s + ')'
sql += ' AND cfg_sex = ' + self.sex.to_s + ' AND cfg_country = ' + self.country.to_s + ' AND cfg_city = ' + self.city.to_s
sql += ' ORDER BY rand() LIMIT 1'
</code>

Może być wykonywany przez AR.find_by_sql, ale wcześniej kod jest źle czytelny. Czy jest jakiś konstruktor zapytań, który może zbudować to zapytanie?

Na przykład Kohana (to jest framework PHP, jestem programistą php, ale chcę zmienić ten dziecięcy język na ruby ​​/ rails) ma konstruktora zapytań, który działa tak:

<code>$sql = DB::select('*')->from('users');
$sql->where('id', 'NOT_IN', DB::expr('SELECT partner_id FROM encounters WHERE user_id = '.$user->id));
$sql->where('id', 'NOT_IN', DB::expr('SELECT user_id FROM encounters WHERE partner_id = '.$user->id.' AND predisposition = '.Encounter::Negative));
....
etc
...
</code>

Zapytanie, które zostało zbudowane za pomocą narzędzia do tworzenia zapytań, takiego jak narzędzie do tworzenia zapytań Kohana, jest bardziej czytelne i zrozumiałe.

Czy jest jakiś klejnot do rozwiązania tego problemu?

questionAnswers(3)

yourAnswerToTheQuestion