Forum: Rails Germany Abfrage abhängig von einer Var iable

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Werner L. (Guest)
on 2008-12-20 19:01
(Received via mailing list)
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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thomas R. Koll (Guest)
on 2008-12-20 19:06
(Received via mailing list)
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
Manuel W. (Guest)
on 2008-12-20 19:16
(Received via mailing list)
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.:
D. W. (Guest)
on 2008-12-20 20:13
(Received via mailing list)
Wie wärs hiermit?

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

HTH

Werner L. schrieb:
Michael S. (Guest)
on 2008-12-20 22:37
(Received via mailing list)
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/
Niko D. (Guest)
on 2008-12-21 01:32
(Received via mailing list)
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.
Werner L. (Guest)
on 2008-12-21 15:33
(Received via mailing list)
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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This topic is locked and can not be replied to.