在rails中创建新的列数据类型

时间:2016-12-29 11:54:10

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 sqldatatypes

我可能没有找到合适的词来获得答案,所以你是我的最后一次机会。

我希望在rails中创建一个新的数据类型,例如: t.israeli_id

它会传递一个自定义的验证方法,并根据它添加错误。

我将在几个表中使用这个数据类型,所以将它作为一个字符串,并在每个model.rb中传递验证函数将不是DRY。

我正在使用Postgresql,以防万一重要。

1 个答案:

答案 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