この Mixin を含むクラス名に基づいて、Mixin でクラス メソッドを動的に生成したいと考えています。
これが私の現在のコードです:
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
しかし、これにより次のメソッド名が得られます。
MyClass.mymodule::classmethods_status
メソッド定義内の基本クラス名の取得は機能しますが (self、self.name ...)、メソッド名に対して機能させることはできません...
これまでのところ、私は試しました
define_method "#{self}"
define_method "#{self.name"
define_method "#{self.class}"
define_method "#{self.class.name}"
define_method "#{self.model_name}"
define_method "#{self.parent.name}"
しかし、これはどれもうまくいかないようです:/
基本クラス名を取得する方法はありますか (モジュールを含むクラスを何と呼ぶかわかりません)。私はこの問題に何時間も苦労してきましたが、きれいな解決策を見つけられないようです:(
ありがとう!