Auflistung von STI Modellen zur Auswahl?

Hallo,

weiss gerade nicht wie ich den Titel besser formulieren könnet, stehe
gerade mal wieder ein wenig neben mir.
Wie mache ich es am besten dass ich in meiner Anwendung meine STI
Modelle “auswählbar” mache?

Beispiel:
Ich habe die Klasse Zahlungsmittel, davon erben Ueberweisung, Bar und
EcCash.

Wie stelle ich das am geschickesten an dass ich in einer Auswahlliste
Bar, EC-Cash und Ãœberweisung zur Auswahl habe,
aber eben in meinem Controller die entsprechenden Objekte erzeugt
werden?

Irgendwo muss ich ja dann in meinem Zahlungsmittel Modell wieder
händisch die Subklassen mit einem Index mitführen, oder?
Also in einem Array oder sonstwas wo ich wieder die Zuordnung zu
angezeigtem Namen und Klassennamen herstellen kann.
Fühlt sich aber irgendwie “unschön” an.

Wie löst man sowas “railsmässig”?

Gruss und Danke

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Daniel W. schrieb:

Hallo,

Hallo Daniel,

Irgendwo muss ich ja dann in meinem Zahlungsmittel Modell wieder
händisch die Subklassen mit einem Index mitführen, oder?
Also in einem Array oder sonstwas wo ich wieder die Zuordnung zu
angezeigtem Namen und Klassennamen herstellen kann.
Fühlt sich aber irgendwie “unschön” an.

Wie löst man sowas “railsmässig”?

“Rubymässig” könntest du das so machen:

class Payment
@@subclasses = Array.new
class << self
def inherited(klass)
@@subclasses << klass
end

  def subclasses
     @@subclasses
  end

end
end

class PaymentA < Payment; end
class PaymentB < Payment; end
class PaymentC < Payment; end

Payment.subclasses → [PaymentA, PaymentB, PaymentC]

Ich vermute mit Rails müsste das genauso gehen. Allerdings hab’ ich’s
noch nicht ausprobiert.

Viele Grüße,

Benedikt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkhaqNwACgkQOD/llH+o4kV+QQCfSPZa1HaKUaGrGgbM+vZjlu+y
dzUAnAvVCAwOrd6HxO/LNdEIAnsq64WN
=hOe8
-----END PGP SIGNATURE-----

On 19.06.2008, at 20:44, Benedikt Deicke wrote:

    @@subclasses

Ich vermute mit Rails müsste das genauso gehen. Allerdings hab’ ich’s
noch nicht ausprobiert.

Undokumentiert, aber vorhanden, also Selbstbau absolut unnoetig:

subclasses_of(Payment)

Es gibt auch eine Methode subclasses ueber ActiveSupport, die
allerdings in ActiveRecord ueberschrieben wird, und protected ist.

Cheers, Mathias

// Mathias Meyer
// PAPERPLANES SOFTWARE.ENTWICKLUNG
// www.paperplanes.de
// Gabriel-Max-Str. 3, 10245 Berlin
// meyer.at.paperplanes.de, 0163.765.27.47