0

文字列に格納されたコードがあり、特定のレコードのコンテキストで実行したいと考えています。

私はこのようなことをしたい:

class Dog < ActiveRecord::Base
  # has the attributes name and age
end

a_dog = Dog.first

some_code = "puts name"

eval some_code, a_dog.get_binding

それは最初の犬の名前を出力します。メソッドが正しくないことはわかってget_bindingいますが、名前は私がやりたいことを示していると思います。

また、これを行うべきではないことはわかっています。できる方法があるかどうかを知りたいだけです:)

4

1 に答える 1

3

受信者のコンテキスト内でコード文字列を評価するinstance_evalメソッドを使用できます。

a_dog = Dog.first
a_dog.instance_eval('puts name')
snuppy
 => nil
于 2012-05-15T14:13:45.397 に答える