我想知道是否有人知道如何做以下事情:
rails generate model Foo name:string, validates: {:name, uniqueness: true}
也就是说,在声明具有某些属性的模型生成器的同时,使用一些rails魔法来同时添加您的验证。
答案 0 :(得分:3)
没有。 rails generate model命令直接与数据库功能相关联。例如,您应该能够执行这样的命令rails generate model Foo name:string:uniq。这将强制数据库要求名称的唯一字符串。这不会为你的foo.rb文件添加任何内容。
以下是有关rails模型生成的更多信息: http://travisjeffery.com/b/2012/03/generate-rails-migrations-that-automagically-add-your-change/
答案 1 :(得分:1)
正如其他人所说,目前还没有办法做到这一点。 rails generate model
命令的大多数特殊选项都由generated_attribute.rb中的parse_type_and_options
方法解析。然后model_generator.rb将使用此信息构建模型和迁移文件。
创建的模型文件的模板是model.rb。在Rails 4中,此模板可以为belongs_to
,polymorphic
和has_secure_password
添加特殊代码,但不会添加与验证相关的代码。
创建的迁移文件的模板是create_table_migration.rb。在Rails 4中,这可以为limit
,decimal
和precision
添加特殊选项。