迁移模型验证 - Ruby on Rails

时间:2018-04-29 06:20:47

标签: ruby-on-rails ruby database validation model

Ruby on Rails中的初学者

我在PostgreSql数据库中有表。我能够将模式从现有数据库转储到Ruby模式并进行迁移(这为我节省了很多时间)

现在我想知道是否有办法从迁移验证实施模型验证。我在表的字段上实现了数据验证。我也希望对模型实现相同的验证。有没有办法用最少的代码来完成它,还是我必须在每个模型中手动创建验证?

例如:

create_table "corporates", id: :serial, force: :cascade do |t|
   t.string "corporate_no", limit: 13, null: false
   t.string "corporate_name", null: false
   t.boolean "active", default: true
   t.datetime "created_at"
   t.datetime "updated_at"
   t.index ["corporate_no"], name: "corporates_corporate_no_key", unique: true
end

现在我想在我的模型中实现这个验证

class Corporate < ApplicationRecord
   validates :corporate_no, presence: true, limit: 13
   validates :corporate_name, presence: true
   validates :active, default: true
end

P.S。那些模型验证可能是错误的。我说我是初学者吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

Rails中不太可能有开箱即用的东西。

但是我发现了一个宝石schema_validations可能会发生,你正在寻找的东西。

唯一的区别是这个宝石遵循DRY方法,并且不会在模型中生成验证。例如,您有users表:

create_table :users do |t|
  t.string :email, null: false, limit: 30
  t.boolean :confirmed, null: false
end

这个宝石不会像你期望的那样产生验证:

class User < ActiveRecord::Base
  validates :email, presence: true, length: { maximum: 30 }
  validates :confirmed, presence: true, inclusion: { in: [true, false] }
end

您仍然会有干净的User模型,但字段已经过验证:

class User < ActiveRecord::Base
end

如果您不需要在每个型号上进行验证,则可对其进行配置。