Ruby-Modul als Sammlung von Methoden

7

Ich habe eine Rails-App, die viele Daten von einigen Java-Diensten lädt. Ich schreibe ein Modul, das mir erlauben wird, einige Auswahlkästchen mit diesen Daten zu füllen, und ich versuche, diese richtig einzuschließen, damit ich sie in meinen Ansichten verweisen kann. Hier ist mein Modul

%Vor%

Meine Idee war es, FilterOptions in meinen application_helper einzubauen, und ich dachte, ich könnte dann meine Methoden mit Select::some_select referenzieren. Das ist nicht der Fall. Ich muss include FilterOptions::Select , dann kann ich auf die Methode some_select selbst verweisen. Ich will das aber nicht, weil ich denke, dass es etwas verwirrend für jemanden ist, der vielleicht nicht weiß, dass some_select von meinem eigenen Modul kommt.

Also, wie schreibe ich Methoden eines Moduls, die wie öffentliche statische Methoden sind, so dass ich mein Hauptmodul einbeziehen und meine Methoden mit dem Submodul-Namespace wie Select::some_select

referenzieren kann     
brad 18.01.2010, 15:01
quelle

2 Antworten

11

Wenn Sie Modulmethoden im Kontext des Moduls selbst definieren, können diese ohne Import aufgerufen werden:

%Vor%

Es ist auch möglich, ein Modul zu importieren und das nächste nicht zu importieren, sondern stattdessen auf den Namen zu verweisen:

%Vor%     
tadman 18.01.2010, 15:11
quelle
12

module_function bewirkt, dass eine Modulfunktion entweder als Instanzmethode oder als Modulfunktion aufgerufen werden kann:

%Vor%

Manchmal möchten Sie, dass jede Methode in einem Modul eine "Modulfunktion" ist, aber es kann mühsam und wiederholend werden, immer wieder "modul_function" zu sagen. In diesem Fall erweitern Sie einfach Ihr Modul:

%Vor%     
Wayne Conrad 18.01.2010 17:44
quelle

Tags und Links