カスタムアクティブレコードマクロを実行しようとしています。しかし、今は不可能なようですが、ブロック内からインスタンス変数を設定することができます。ここで私は何をしようとしています。クラスメソッドからインスタンス変数を設定する方法は?
私はinstance_evalを、class_evalメソッド試してみましたmodule ActiveRecord
class Base
def self.included(base)
base.class.send(:define_method, :my_macro) do |args|
# instance_variable_set for the model instance that has called this
# macro using args
end
end
end
end
..しかし、何も動いていないようにみえたり、私はそれらを使用する方法がありません。
ありがとうございます。
を編集してみましょう。私はクラスメソッドを持っています。クラスのインスタンスがこのメソッドを呼び出します。さて、このクラスメソッドは、インスタンスにインスタンス変数を設定するよう指示する必要があります。
編集 - これは私がOマクロ
class MyModel < ActiveRecord::Base
my_macro(*args)
def after_initialize
# use the value set in the macro as @instance variable
end
end
Um ... Rubyが「クラスメソッド」という用語を再定義しない限り、クラスメソッドのポイントはインスタンスが存在しないということですか? – delnan
それも私が考えていたものです。インスタンス変数を動的に追加する方法をインスタンスに伝える方法があるかどうかを確認することに興味があります。 –
@greg @delnan:はい..私は完全に同意します...しかし、インスタンス変数をそれ自身に追加することをクラスに指示する方法があるのだろうかと思います。 – ZX12R