Конструктор SQL-запросов в рельсах - PullRequest
5 голосов
/ 04 декабря 2009

Мы пытаемся создать конструктор SQL-запросов, который позволял бы пользователям создавать запросы с помощью визуальной помощи.
У нас есть весь интерфейс, с которым пользователь может выбирать таблицы, добавлять условия и т.д. Однако наш бэкэнд является беспорядком, поскольку мы пытаемся сделать эти запросы в виде строки, получающей условия от пользователя, а затем создающей соответствующие строки SQL в наших моделях.
Это в конечном итоге станет очень ошибочным и сложным в обслуживании, поскольку мы добавим поддержку для более сложных запросов. Кто-нибудь знает плагин sql builder, который мы можем использовать, или лучший способ подойти к этому.

Ответы [ 4 ]

3 голосов
/ 20 января 2010

Выезд Арель . fork этого проекта теперь используется в Rails 3, чтобы помочь с агностицизмом ORM.

1 голос
/ 27 января 2010

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Вот репозиторий searchlogic .

0 голосов
/ 21 декабря 2009

Вы должны посмотреть на плагин компоновщика условий:

http://blog.inquirylabs.com/2007/01/04/condition-builder-10-released/

Не уверен, что он удовлетворит все ваши потребности, но у меня это хорошо работает.

0 голосов
/ 04 декабря 2009

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

Использование фильтра записей для создания сложных запросов имеет смысл. Я пытаюсь подход, в котором я беру строку запроса от пользователя в формате Json. Затем преобразуйте эту строку в правильный синтаксис фильтра записей, это потребует анализа всей строки. После того, как мы проанализировали строку и, если она в правильном синтаксисе, я просто eval ее и получаю результаты.

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