根据rails文档
http://guides.rubyonrails.org/migrations.html
2.3支持的类型修饰符表示应该可以修改字段以允许或禁止列中的NULL,并且可以在终端上执行
这就是我想要在迁移文件中出现的内容
class CreateTestModels < ActiveRecord::Migration
def change
create_table :test_models do |t|
t.string:non_nullable, :null => false
t.timestamps
end
end
end
在终端上,我试过
rails generate model TestModel non_nullable:string{null}
rails generate model TestModel 'non_nullable:string{null: false}'
我想不出任何其他表达方式
注意:我已经知道您可以进入迁移文件并手动添加它。那不是我想要的。
答案 0 :(得分:1)
docs提到
一些常用的类型修饰符可以直接在命令行上传递。它们用花括号括起来,并按照字段类型
但他们没有详细说明哪些&#34;常用&#34;修饰符将起作用。
正如罗杰斯先生所指出的那样 只有three supported options:
name:string{255}
)dollar_fragment:decimal{3,2}
)agent:references{polymorphic}
)如user2903934所述 也许可以从命令行将其作为黑客进行工作。
注意:这是一个黑客攻击。我不建议这样做,但它确实回答了你的问题。
rails generate model TestModel 'non_nullable, null => false:string'
看起来它在第一个冒号上分裂,所以我们可以使用hashrocket语法来隐藏选项。这会产生:
class CreateTestModels < ActiveRecord::Migration
def change
create_table :test_models do |t|
t.string :non_nullable, null => false
t.timestamps
end
end
end
显然没有得到官方支持,它恰好可以正常工作。
答案 1 :(得分:0)
我能找到最接近您的解决方案的是:
rails generate model TestModel non_nullable,null:string
我无法解决,
之后的问题,但这应该会给你一个开始
答案 2 :(得分:-2)
您可以在模型类中执行此操作 -
class TestModel < ActiveRecord::Base
validates_presence_of :non_nullable
end