Ruby on Rails, einschließlich eines Moduls mit Argumenten

7

Gibt es eine Möglichkeit, Argumente zu verwenden, wenn Sie ein Ruby-Modul hinzufügen? Ich habe ein Modul Assetable, das in vielen Klassen enthalten ist. Ich möchte in der Lage sein, attr_accessor 'on the fly' zu generieren.

%Vor%     
user3868832 16.11.2014, 19:15
quelle

3 Antworten

13

Es gibt keine Möglichkeit Argumente zu übergeben, wenn das Modul eingeschlossen wird. Am besten wäre es, eine Klassenmethode zu definieren, mit der Sie später erstellen können, was Sie brauchen:

%Vor%

Seien Sie auch vorsichtig, wenn Sie die Methode included innerhalb eines Problems außer Kraft setzen, da sie auch von ActiveSupport::Concern verwendet wird. Sie sollten super innerhalb der Methode overriden aufrufen, um eine ordnungsgemäße Initialisierung sicherzustellen.

    
Gabriel de Oliveira 16.11.2014, 19:30
quelle
15

Es gibt einen Trick: eine Klasse zu erstellen, die von einem Modul erbt, so dass Sie alle Argumente wie Klasse an das Modul übergeben können.

%Vor%

Die Details sind unter Ссылка gebloggt. Ich hoffe, Sie finden es nützlich.

    
kinopyo 06.06.2016 03:56
quelle
4

Sie können keine Argumente an ein Modul übergeben. In der Tat können Sie keine Argumente an irgendetwas außer einer Nachricht senden.

Sie müssen also eine Nachricht senden:

%Vor%

Hinweis: Ich habe nicht gesehen, warum Sie hier ActiveSupport::Concern benötigen, aber es ist einfach, es wieder hinzuzufügen.

    
Jörg W Mittag 17.11.2014 13:02
quelle

Tags und Links