Abfrage abhängig von einer Var iable


#1

Hallo.
ich mochte gerne bei

Model.find_by_plz(params[:plzcheck][:plz])

das Model austauschbar, abhängig von einer Bedingung machen…
Also je nachdem wer sich einlogged, bekommt eine andere Tabelle.

Einfach eine String für Model reinsetzen klappt irgendwie nicht…
Wie könnte das aussehen?

Gruß

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


http://www.webagentur-laude.de


#2

Am 20.12.2008 um 18:00 schrieb Werner L.:

Hallo.
ich mochte gerne bei

Model.find_by_plz(params[:plzcheck][:plz])

das Model austauschbar, abhängig von einer Bedingung machen…
Also je nachdem wer sich einlogged, bekommt eine andere Tabelle.

Hast du wirklich verschiedene Datenbank Tabellen?

paramModel = w%(City Town Settlement).include?(params[:model]) ?
params[:model] : ‘Town’
paramModel.constantize.find_by_plz …

ciao, tom

Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: removed_email_address@domain.invalid
http://flickr.com/people/tomk32


#3

Hallo Werner,

entweder du machst es so:

if irgendwas
Model1.find_by_plz(params[:plzcheck][:plz]
else
Model2.find_by_plz(params[:plzcheck][:plz]
end

oder wenn du mehr als nur zwei Möglichkeiten haben willst und viele if
abfragen vermeiden willst, kannst du es auch so machen:

“Module”.constantize.find_by_plz(params[:plzcheck][:plz]

und “Module” is dann halt der name des Modules…

gruß
Manuel

Am 20.12.2008 um 18:00 schrieb Werner L.:


#4

Wie wärs hiermit?

userModel = Kernel.const_get(params[:welches_modell_auch_immer])
userModel.find_by_plz(params[:plzcheck][:plz])

HTH

Werner L. schrieb:


#5

On Saturday 20 December 2008, Daniel W. wrote:

Wie wärs hiermit?

userModel = Kernel.const_get(params[:welches_modell_auch_immer])
userModel.find_by_plz(params[:plzcheck][:plz])

Als Einladung an Cracker, meinst du? const_get mit einem String, der vom
Benutzer beliebig gesetzt werden kann, ist extrem gefährlich.
Sicherheitshalber nur mit einer Liste erlaubter Strings verwenden.

Michael


Michael S.
mailto:removed_email_address@domain.invalid
http://www.schuerig.de/michael/


#6

Am 20.12.2008 um 18:00 schrieb Werner L.:

Hallo.
ich mochte gerne bei

Model.find_by_plz(params[:plzcheck][:plz])

das Model austauschbar, abhängig von einer Bedingung machen…
Also je nachdem wer sich einlogged, bekommt eine andere Tabelle.
Auf User eine Methode implementieren, die das gewünschte Model
zurückgibt (nicht als String, sondern die Klasse selbst). Und dann:

@current_user.model.find_by_plz(params[:plzcheck][:plz])

niko.


#7

Am 20.12.2008 um 18:06 schrieb Thomas R. Koll:

Hast du wirklich verschiedene Datenbank Tabellen?

Hallo Thomas… und alle anderen danke für die Lösungsvorschläge.

mir fiel im nachhinein noch die case/when Konstruktion ein

def coice(var)
case var
when ‘123’
Model.find…
when ‘234’
Model1.find
else
Standardmodel
end

constantize und Kernel.const_get kenn ich noch gar nicht…sieht recht
kompakt aus…muß ich mir mal anlesen.

und -stimmt, das sollte ich mal überdenken, warum es verschiedene
Tabellen sind.
Könnte die Preise auch in eine einzige Tabelle packen,
allerdings hätte ich da wohl das gleiche Thema mit den Columns…

Gruß und Danke

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


http://www.webagentur-laude.de