私はruby-trelloでRubyコードのこの行を見たところです:
# Returns the member who created the action.
one :member_creator, :via => Member, :using => :member_creator_id
これは、次のように定義されたスーパークラスメソッドに関連しているようです。
def self.one(name, opts = {})
class_eval do
define_method(:"#{name}") do |*args|
options = opts.dup
klass = options.delete(:via) || Trello.const_get(name.to_s.camelize)
ident = options.delete(:using) || :id
klass.find(self.send(ident))
end
end
end
class_evalがリフレクションに関連していることを理解しています。
誰かがサブクラスのコード行の目的を説明してもらえますか?
私の推測では、名前としてone
渡さ:member_creator
れるクラスメンバーと、引数として2つの末尾の引数を呼び出していると思いopts
ます。しかし、なぜこれがクラスレベルで呼び出されるのでしょうか。