小编Tel*_*lmo的帖子

Ruby字符串到类名

我正在尝试创建一个新类,它将继承自ActiveRecord::Base需要从字符串动态生成的类

"general_systems".camelize.singularize = Class.new < ActiveRecord::Base
Run Code Online (Sandbox Code Playgroud)

但是我一直收到错误:

undefined method `singularize=' for "GeneralSystems":String
Run Code Online (Sandbox Code Playgroud)

我也尝试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>'
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

ruby metaprogramming

34
推荐指数
6
解决办法
3万
查看次数

标签 统计

metaprogramming ×1

ruby ×1