我可能没有找到合适的词来获得答案,所以你是我的最后一次机会。
我希望在rails中创建一个新的数据类型,例如: t.israeli_id
它会传递一个自定义的验证方法,并根据它添加错误。
我将在几个表中使用这个数据类型,所以将它作为一个字符串,并在每个model.rb中传递验证函数将不是DRY。
我正在使用Postgresql,以防万一重要。
答案 0 :(得分:1)
不,你是以错误的方式接近这个。数据库对您的应用程序逻辑一无所知,它只能进行基本验证(非空等)。
所有特定于应用程序的验证,错误消息和其他内容 - 它都会进入您的模型。如果您需要在多个模型中使用它并且不想复制代码,那么请创建模型问题,HasIsraeliId
或其他内容。这就是问题所在。
# app/models/concerns/has_israeli_id.rb
module HasIsraeliId
extend ActiveSupport::Concern
included do
validate :some_field, whatever_condition: true
end
end
# app/models/user.rb
class User < ApplicationRecord
include HasIsraeliId
end