【发布时间】:2011-07-15 04:52:42
【问题描述】:
我正在尝试创建一个从ActiveRecord::Base 继承的新类,该类需要从字符串动态生成
"general_systems".camelize.singularize = Class.new < ActiveRecord::Base
但是我不断收到错误:
undefined method `singularize=' for "GeneralSystems":String
我也试过constantize这个字符串
>> foo = "general_systems".camelize.singularize
=> "GeneralSystem"
>> foo.constantize
NameError: uninitialized constant GeneralSystem
from /var/lib/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/inflector/methods.rb:124:in `block in constantize'
from /var/lib/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/inflector/methods.rb:123:in `each'
from /var/lib/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/inflector/methods.rb:123:in `constantize'
from /var/lib/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/core_ext/string/inflections.rb:43:in `constantize'
from (irb):4
from /usr/bin/irb:12:in `<main>'
>> foo.constantize = Class.new
NoMethodError: undefined method `constantize=' for "GeneralSystem":String
from (irb):5
from /usr/bin/irb:12:in `<main>'
任何帮助将不胜感激。
【问题讨论】:
-
你不想调用一个不存在的方法 "general_systems".camelize.singularize=(Class.new)。你到底想做什么?
-
根据您的一位 cmets 对某人的回答判断,您已经用他们的解决方案解决了问题。也许你现在可以选择一个答案?
标签: ruby metaprogramming