Find all conditions

Bevor ihr alle in den Mai tanzt…

Ich komme hier gerade nicht weiter. Vielleicht kann mir jemand eine
Idee geben.

Die Tabelle hat chars für die Spalten Kinder, Jugendliche, etc.
also 1 oder 0 als Wert

Abfrage im Formular:
<%= f.select(:zielgruppe, [[‘Kinder’, ‘kinder’],
[‘Jugendliche’, ‘jugend’],
[‘Erwachsene’, ‘erwachsene’],
etc. etc.

Wie schreibe ich da am besten das find statement

@result = Model.find(:all, :conditions => [params[:zielgruppe] => true])
erhalte ich : undefined method `%’ for {nil=>true}:Hash

Da steh ich gerade aufm Schlauch, zumal ich 5 dieser selects habe…

Gruß und Danke

Werner L.
Lindenburger Allee 22 - 50931 Köln

0221.8805 635


http://www.webagentur-laude.de

Hi Werner,

Was rails aus dem conditions machen möchte ist etwas das hier
{params[:zielgruppe] => true} %

Geht natürlich nicht. Das hier aber sollte:
Model.find(:all, :conditions => [‘zielgruppe = ?’, params[:zielgruppe]])

ciao, tom

Am 30.04.2008 um 20:00 schrieb Werner L.:

                          ['Jugendliche', 'jugend'],
                          ['Erwachsene', 'erwachsene'],

etc. etc.

Wie schreibe ich da am besten das find statement

@result = Model.find(:all, :conditions => [params[:zielgruppe] =>
true])
erhalte ich : undefined method `%’ for {nil=>true}:Hash

Da steh ich gerade aufm Schlauch, zumal ich 5 dieser selects habe…


Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: [email protected]

Am 30.04.2008 um 20:18 schrieb Thomas R. Koll:
Hallo Tom…

danke soweit… aber das ist nur das halbe Problem.
Ich verstehe noch nicht wie ich 15 Spalten gleichzeitig abfragen kann.
Soviele Auswahlmöglichkeiten hat der select_tag

Das select gibt zb. den Wert ‘jugend’ zurück. Nun gibt es eine Spalte
jugend in der div. Datensätz eine 1 stehen haben. Die sollen geliefert
werden. Nicht aber die Werte aus der Spalte kinder.
Gibt es da einen Weg ?

Gruß

<%= f.select(:zielgruppe, [[‘Kinder’, ‘kinder’],
Da steh ich gerade aufm Schlauch, zumal ich 5 dieser selects habe…
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Hi Werner,

Ich denke du hast einen falschen Ansatz beim Design deiner Datenbank.

Was dir fehlt ist offenbar ein model Audience mit einer Relation zu
deinem
bisherigen model.

ciao, tom

Am 30.04.2008 um 20:37 schrieb Werner L.:

geliefert werden. Nicht aber die Werte aus der Spalte kinder.
Gibt es da einen Weg ?


Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: [email protected]

hi,

Die Tabelle hat chars für die Spalten Kinder, Jugendliche, etc.
also 1 oder 0 als Wert

du hast also so eine tabelle?

id | kinder | jugend | erwachsene | …
1 | 0 | 1 | 0 | …

wenn ja, wäre’s vermutlich besser die struktur zu ändern, es sei denn
das ist bewusst so. wie?

  • wenn es pro model nur eine zielgruppe gibt, kannst du die felder auf
    eines eindampfen (das dann zielgruppe heisst und als wert enthält:
    0/1/2 zur identifikation von kinder/jugend/erwachsene, oder direkt den
    string, oder die zielgruppen_id eines per has_one verknüpften
    zielgruppen-objekts).
  • wenn es pro model mehrere zielgruppen geben kann, würde eine
    has_many relation mit eigenem zielgruppen-objekt sinn machen.

um dein bestehendes problem ohne tabellen-strukturänderung zu lösen,
müsstest du etwa folgendes machen (bäh ;-)). problem ist u.a., dass du
bei einer änderung der verfügbaren zielgruppen deinen code anpassen
musst.

@result = Model.find(:all, :conditions => {
‘kinder’ => (params[‘zielgruppe’] == ‘kinder’),
‘jugend’ => (params[‘zielgruppe’] == ‘jugend’),
// …
}

viele
grüße,phillip


Am 30.04.2008 um 20:18 schrieb Thomas R. Koll:

Hi –

On Wed, 30 Apr 2008, Werner L. wrote:

aber die Werte aus der Spalte kinder.
Gibt es da einen Weg ?

Wenn ich das Problem richtig verstanden habe, vielleicht koenntest du
es so machen:

Model.find(:all, :conditions => [‘zielgruppe in (?)’,
params[:zielgruppe]])

David

Am 30.04.2008 um 20:42 schrieb Thomas R. Koll:

die db war so aufgebaut (access…)

Was dir fehlt ist offenbar ein model Audience mit einer Relation zu
deinem
bisherigen model.

mhh damit kann ich jetzt erst mal nix anfangen…

wo kann ich da was finden…?
Gruß

Ich verstehe noch nicht wie ich 15 Spalten gleichzeitig abfragen
Skype: TomK32 || Mail: [email protected]


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Hi –

On Wed, 30 Apr 2008, Werner L. wrote:

Wenn ich das Problem richtig verstanden habe, vielleicht koenntest du
es so machen:

Model.find(:all, :conditions => [‘zielgruppe in (?)’, params[:zielgruppe]])

Ich teste das morgen mal . Für heute langts…

Ich glaube jetzt, die Details missverstanden zu haben… es gibt
naemlich keine “zielgruppe”-Spalte, wie ich glaubte. Vielleicht kann
dieses “in (?)” immerhin irgendwie helfen :slight_smile:

David

Am 30.04.2008 um 21:11 schrieb David A. Black:

Hallo David…

denke das sollte klappen

$sql = 'SELECT * FROM tabelle WHERE kinder = \ '1' LIMIT 0, 30 ';

Wenn ich das Problem richtig verstanden habe, vielleicht koenntest du
es so machen:

Model.find(:all, :conditions => [‘zielgruppe in (?)’,
params[:zielgruppe]])

Ich teste das morgen mal . Für heute langts…

Danke

See http://www.rubypal.com for details and updates!


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Hi –

On Wed, 30 Apr 2008, Werner L. wrote:

                        ['Jugendliche', 'jugend'],
                        ['Erwachsene', 'erwachsene'],

etc. etc.

Wie schreibe ich da am besten das find statement

@result = Model.find(:all, :conditions => [params[:zielgruppe] => true])
erhalte ich : undefined method `%’ for {nil=>true}:Hash

OK, neue Idee:

Model.find(:all,
:conditions => [*params[:zielgruppe]].join(" = 1 OR “)) + " = 1”

(Mit beliebiger SQL-reinigung.)

Und dazu, im View:

<%= select_tag(“zielgruppe[]”,
options_for_select([[‘Kinder’, ‘kinder’],
[‘Jugendliche’, ‘jugend’],
[‘Erwachsene’, ‘erwachsene’]]),
:multiple => true) %>

oder aehliches.

David

Am 01.05.2008 um 05:05 schrieb David A. Black:

Hi David…

danke für den Vorschlag…

bisher klappt es so:

begin

     @result = User.find(:all, :conditions => ["#{params[:user]

[:zielgruppe]} = ?", 1])
rescue

Das rescue weil auch null Werte abgefangen werden sollen…

Was jetzt aber noch kommt ist, das ich ca 15-20 dieser Art Abfragen in
die conditions einbauen muß. Selects und Check Boxen.
Ich hatte die Idee das mit einem array zu machen.

:conditions => [“array1”, array2]

Aber noch nichts konkretes wie diese arrays aufzubauen
wären…nullwerte abfangen…

Schönen Feiertag…
Gruß

also 1 oder 0 als Wert
true])


Rails training from David A. Black and Ruby Power and Light:
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
INTRO TO RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for details and updates!


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Hi –

On Thu, 1 May 2008, Werner L. wrote:

:conditions => [“array1”, array2]

Aber noch nichts konkretes wie diese arrays aufzubauen wären…nullwerte
abfangen…

array1 ist aber vermuetlich ein echtes Array (und kein String).
Deswegen hatte ich geglaubt, dass “join” klappen wuerde:

:conditions => [*params[:user][:zielgruppe]].join(" = 1 OR “)) + " =
1”

Wenn zB. man “jugend” und “erwachsene” waehlt, wird das Array
[“jugend”, “erwachsene”] dem Controller in params[:user][:zielgruppe]
geliefert, und folgendes SQL gebaut:

SELECT * FROM things WHERE (jugend = 1 OR erwachsene = 1);

David

Am 01.05.2008 um 14:01 schrieb David A. Black:

Hi David.
danke für den input. In diesem Fall ist kein Mehrfachauswahl nötig.
sondern…

:conditions => [*params[:user][:zielgruppe]].join(" = 1 OR “)) + " =
1”

Wenn zB. man “jugend” und “erwachsene” waehlt, wird das Array
[“jugend”, “erwachsene”] dem Controller in params[:user][:zielgruppe]
geliefert, und folgendes SQL gebaut:

SELECT * FROM things WHERE (jugend = 1 OR erwachsene = 1);

Ich bin am überlegen wie ich
select 1
select 2
select 3 etc.

checkbox 1
checkbox2 etc.

in den conditions-string einbaue.

Die options entsprechen jeweils einer db Spalte (char 0 / 1)

select 1 bis 5 , checkboxes eh, können jeweils …müssen aber keinen
Wert haben.
Habe noch keine Erfahrung solche komplexen Abfragen zusammenzubauen.

Wenn du magst und Zeit hast (oder auch eine anderer
Mitleser…) ,können wir gerne über eine Kleinauftrag sprechen…

Gruß

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Hallo,

On Wed, Apr 30, 2008 at 8:00 PM, Werner L. [email protected]
wrote:

Die Tabelle hat chars für die Spalten Kinder, Jugendliche, etc.
also 1 oder 0 als Wert
Abfrage im Formular:
<%= f.select(:zielgruppe, [[‘Kinder’, ‘kinder’],
[‘Jugendliche’, ‘jugend’],
[‘Erwachsene’, ‘erwachsene’],

ich komme zwar etwas spät mit dieser Mail, aber hoffentlich noch nicht
zu spät. Wie wäre es mit dem has_flags-Plugin?

http://64.164.6.244:9080/has_flags

Es behandelt Deine Flags als Bit-Field in der Datenbank und die
Abfrage ist recht leicht zu bewerkstellingen: Model.find_by_flags.

Andreas R.

Am 11.05.2008 um 03:49 schrieb Andreas R.:

ich komme zwar etwas spät mit dieser Mail, aber hoffentlich noch nicht
zu spät. Wie wäre es mit dem has_flags-Plugin?

Hallo Andreas…

velen Dank für deinen Vorschlag. Ich habe das mit condition_bilder
(plugin) gelöst…

http://www.psychotherapiesuche.de/spezialsuche

Gruß

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de