Ruby on rails 将变量字符串转换为严格对象

Ruby on rails 将变量字符串转换为严格对象,ruby-on-rails,Ruby On Rails,我希望能够将字符串创建为%%variable%%,并将其解释为方法对象而不是字符串对象。因此%%UserDatabase.name%%将被读取为@DatabaseUser.name,然后返回类似“Michael”的内容 以下是我目前掌握的情况: def parse_block(component) component.gsub!(/%%([a-z].*)%%/s, "@#{'\\1'}") end 任何帮助都将不胜感激。谢谢我认为最好在重新注入之前解释一下 def parse_block(

我希望能够将字符串创建为%%variable%%,并将其解释为方法对象而不是字符串对象。因此%%UserDatabase.name%%将被读取为@DatabaseUser.name,然后返回类似“Michael”的内容

以下是我目前掌握的情况:

def parse_block(component)
  component.gsub!(/%%([a-z].*)%%/s, "@#{'\\1'}")
end

任何帮助都将不胜感激。谢谢

我认为最好在重新注入之前解释一下

def parse_block(component)
  component.gsub!(/%%([a-z].*)%%/s) do |c|
    eval($1)
  end
end

但这是一个非常糟糕的主意,如果字符串不安全,您可能会遇到一些安全问题。

也许您可以传递模型名称、模型id和所需的方法?所以你会以

def parse_whatever(model_name, model_instance_id, method)
  active_record_class = Kernel.const_get(classname)
  active_record_instance = active_record_class.find(model_instance_id)
  active_record_instance.send(method)
end