如何使用Rails检查表列的约束?

时间:2017-06-26 16:31:42

标签: ruby-on-rails database constraints

如果我不使用annotate宝石,我如何查看表格列上的约束?我可以使用rails控制台查看哪些列在哪些表上,但我看不到像not null这样的约束。

2 个答案:

答案 0 :(得分:3)

任何ActiveRecord子类都有columns方法,它返回有关基础表的列的所有元数据:

User.columns.find { |c| c.name == 'email' }.null
# => false

答案 1 :(得分:2)

如果没有annotate,从vim /文本编辑器最简单的方法就是查看db/schema.rb文件。此文件是所有迁移的高潮,表示数据库模式的当前状态。

它看起来与迁移文件非常相似。这是一个例子:

ActiveRecord::Schema.define(:version => 11) do
  create_table "users", :force => true do |t|
    t.string   "email", default: "", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string   "remember_token"
    t.datetime "remember_token_expires_at"
  end
end

正如您在email列中看到的那样,它可能不为空(not null)。对于字符限制等,其他一些参数可能看起来像limit: 20等。More column definitions are provided in the docs