如何在Rails迁移中限制字符串列的值?

时间:2017-09-23 15:59:40

标签: ruby-on-rails string postgresql migration ruby-on-rails-5

我想使用ga Postgres 9.5数据库构建一个Rails数据库迁移,其中我有一个字符串列

  def change
    create_table :transactions do |t|
      t.string transaction_type, null: false

但我想将列的值限制为仅限某些字符串。有什么方法可以将其构建到我的迁移中吗?如果是这样,那会怎么样?

2 个答案:

答案 0 :(得分:0)

我认为更好的方法是在事务控制器中为create操作添加字符串模式验证方法,如下所示。您可以找到有关回调here的更多信息。

before_action :validate_transaction_type, only: [:create]

答案 1 :(得分:0)

您可以在数据库中创建枚举类型,并使用该类型创建新列。查看这篇文章Rails enum and PostgreSQL enum