在Ruby on Rails中,脚手架字段名称可以包含多个单词

时间:2015-01-25 00:17:42

标签: ruby-on-rails scaffolding

在Ruby on Rails中,如果我想使用脚手架生成器,我可以使用超过1个字的字段名称,即

'class name':text

相反
name:text

我试过看,也试过但是无法弄清楚这是否可能。


此外,如果我想生成一个名为Class的脚手架,我似乎无法做到这一点 - 但我希望我的用户看到“class”这个词,而不是我将要拥有的任何新名称选择。不管怎么说?

1 个答案:

答案 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)。