简体   繁体   English

Rails - 使用表选项生成脚手架

[英]Rails - generate Scaffold with Table Options

I've started learning Ruby last week, and I've started learning Rails today, so bear with me. 我上周开始学习Ruby,今天我开始学习Rails了,所以请耐心等待。 I see that Rails come with generators that allow you to generate models/controllers or even model+controller+views bundle as 'scaffold'. 我看到Rails带有生成器,允许您生成模型/控制器甚至模型+控制器+视图包作为“脚手架”。 This is what I am interested in. 这就是我感兴趣的。

However, I have a question. 但是,我有一个问题。 How do I set database options of the column? 如何设置列的数据库选项?

eg. 例如。 To generate a users table I would do: 要生成用户表,我会这样做:

rails g scaffold users uuid:binary name:string email:string password:binary registered_on:date number:integer default:string

Now what if I'm integrity freak and am not happy by having validation just in model/controller, but want to do database level limitations as well. 现在如果我是完整性怪物并且不仅仅在模型/控制器中进行验证,而且想要进行数据库级别限制,那该怎么办呢? What if I want email to be 50 characters max, and number to Auto-Increment and neither of all fields is allowed to be NULL and default field must have a default of 'foo'. 如果我希望email最多为50个字符,并且number为自动递增,并且所有字段都不允许为NULL并且default字段必须具有默认值'foo',该怎么办? Is there any way to pass these requirements to generator command? 有没有办法将这些要求传递给发电机命令?

I know its possible to set these options in .rb file that is used in rake db:migrate, however it would be easier to just pass values in with 1 command. 我知道可以在rake db:migrate中使用的.rb文件中设置这些选项,但是使用1命令传递值会更容易。

至少有一些东西是可用的,比如字符串长度,但不确定其他东西。

rails g scaffold users email:string{50}
  1. Use type modifiers between curly braces, example: 在花括号之间使用类型修饰符 ,例如:

     rails generate migration AddDetailsToProducts price:decimal{5,2} 

    More info: migrations 更多信息: 迁移

  2. Use scaffold and obtain generic migration files. 使用scaffold并获取通用迁移文件。 And, as you mentioned, do the customizations in there. 并且,正如您所提到的,在那里进行自定义。 This files are found in db/migrate . 此文件位于db/migrate

After you are done customizing the fields, don't forget to do a rake db:migrate . 完成自定义字段后,不要忘记执行rake db:migrate

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM