在Ruby on Rails中,如果我想使用脚手架生成器,我可以使用超过1个字的字段名称,即
'class name':text
与
相反name:text
我试过看,也试过但是无法弄清楚这是否可能。
此外,如果我想生成一个名为Class的脚手架,我似乎无法做到这一点 - 但我希望我的用户看到“class”这个词,而不是我将要拥有的任何新名称选择。不管怎么说?
答案 0 :(得分:3)
不确定
rails g migration Foo "bar baz":string
rake db:migrate # => SyntaxError
糟糕。这会产生这样的迁移:
class CreateFoos < ActiveRecord::Migration
def change
create_table :foos do |t|
t.string :bar baz
t.timestamps
end
end
end
显然这不起作用。您可以通过将符号包装在引号中来修复它:
t.string :"bar baz"
现在迁移工作正常,但我们可以使用该模型吗?
> f = Foo.new
> f.bar baz # nope
> f."bar baz" # nope
> f.send("bar baz") # Yay!
如何更改值?
> f.send("bar baz=", "wtf") # OK
> f.send("bar baz") # => "wtf"
因此,在非常狭隘的技术意义上,是的,你可以做到这一点。但你不应该。
我希望我的用户能够看到“课堂”这个词而不是新词 名字我将不得不选择
您始终可以为面向用户的代码使用不同的方法(即别名)来显示列或模型名称。这可以像在模型上定义自己的方法,或使用辅助函数或装饰器类一样简单。你肯定想避免使用Ruby和Rails使用的术语(比如Class)。