Ich möchte eine Klassenmethode in einem Mixin, basierend auf dem Klassennamen, die diese Mixin enthalten dynamisch generieren.Rails: dynamisch definieren Klassenmethode basierend auf Elternklasse Name in Modul/Anliegen
Hier ist meine aktuellen Code:
module MyModule
extend ActiveSupport::Concern
# def some_methods
# ...
# end
module ClassMethods
# Here is where I'm stuck...
define_method "#{self.name.downcase}_status" do
# do something...
end
end
end
class MyClass < ActiveRecord::Base
include MyModule
end
# What I'm trying to achieve:
MyClass.myclass_status
Aber geben Sie mir die folgende Methode Name:
MyClass.mymodule::classmethods_status
gibt es die Basisklasse Name innerhalb der Methodendefinition Werke (self, self.name. ..), aber ich kann es nicht für den Namen der Methode machen funktioniert ...
Bisher habe ich versucht
Aber nichts davon scheint den Trick zu tun:/
Gibt es eine Möglichkeit, die Basisklassennamen abrufen kann (nicht sicher, was die Klasse zu nennen, die mein Modul enthalten). Ich habe jetzt stundenlang mit diesem Problem zu kämpfen, und ich kann nicht eine saubere Lösung :(
Dank
Dank für die Erklärung. Ich habe 'define_singleton_method' im' included do # ... end'-Block verwendet: 'define_singleton_method" # {self.name} _status "do # ... end' ' – cl3m