Ich suche ein Plugin/Gem, das aus einer Maschinen-freundlichen 
Query-Spezifikation für AR#find die :condition- und :include-Parameter 
baut. Es gibt eine übergroße Auswahl an Plugins, die dies aus einer 
Menschen-freundlichen Repräsentation tun. Sieht alles schön aus, hilft 
aber wenig dabei, eine Query-Spezifikation, die vom Client kommt, in 
etwas AR-taugliches umzuwandeln.

Die genaue Form der Query-Spezifikation habe ich noch nicht festgelegt, 
sie könnte aber so aussehen

[
  { :property => 'lastname', :operator => '=', :target => 'Schmidt' },
  { :property => 'children.firstname', :operator => 'LIKE', 
    :target => 'P* },
  { :property => 'children', :aspect => 'count', :operator => '>',
    :target => 2 }
]

Das soll alle Leute finden, die mit Nachnamen 'Schmidt' heißen und mehr 
als 2 Kinder haben, deren Vornamen mit 'P' beginnt.

In reinem ActiveRecord geschrieben, müßte das nur für die ersten beiden 
Bedingungen aus dem Stehgreif so aussehen:

Person.find(:all, :include => :children,
  :include => :children,
  :conditions => [
    "(lastname = ?) AND (firstname_children LIKE ?",
    'Schmidt', 'P%'
  ]
)

Die dritte Bedingung läßt sich, glaube ich, gar nicht ohne beinahe 
vollständig handgeschriebenes SQL ausdrücken, da :select ignoriert 
wird, wenn :include vorkommt.

Ich überlege noch, ob die beste Lösung wäre, das Problem nach unten in 
die Datenbank zu schieben und dort geeignete Views zu definieren. Das 
würde die Kompexität für einen Query Builder deutlich verringern.

Ideen?

Michael

-- 
Michael Schuerig
mailto:[email protected]
http://www.schuerig.de/michael/
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an