Jör*_*tag 87
类在Ruby中没有名称.它们只是分配给变量的对象,就像任何其他对象一样.如果要通过其他变量引用类,请将其分配给另一个变量:
Foo = String
Run Code Online (Sandbox Code Playgroud)
Siw*_*申思维 15
在文件coupon.rb:
class Coupon
#...
end
# add this line of code to make alias for class names
# option1. if you haven't defined a "Ticket" class:
Ticket = Coupon
# option2. if Ticket has been defined, you have to redefine it:
Object.send :remove_const, "Ticket"
const_set "Ticket", Coupon
Run Code Online (Sandbox Code Playgroud)
"任何以大写字母开头的引用,包括类和模块的名称,都是常量" - "metaprogramming ruby",page38,Constant section
有人来这里寻找如何为一个rails模型类别名来获得一个新名称:
我能够简单地做Foo = Bar,但不得不把Foo它自己的模型文件放在里面,这样我就不会得到未初始化的常量错误.例如
# models/foo.rb
Foo = Bar
Run Code Online (Sandbox Code Playgroud)
你可能还会发现怪事尝试使用别名制像协会has_many,has_one等我发现你通常可以围绕这些获得通过根命名空间(或相应的命名空间取决于你的模型如何结构化),以确保Rails正在努力自动加载正常的常量:
has_many :foo, class_name: '::Foo'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16005 次 |
| 最近记录: |