用于数组数据类型

时间:2016-11-03 09:51:03

标签: ruby-on-rails rails-postgresql

PostgreSQL将其他数据类型添加到Active Record默认值。
请参阅Stackoverflow上的PostgreSQL documentationList of available datatypes和RailsGuides中的Active Record and PostgreSQL
对于array数据类型,必须在迁移中添加array: true。例如:

create_table :books do |t|
  t.string 'title'
  t.string 'tags', array: true
  t.integer 'ratings', array: true
end

Book模型中应该使用哪种验证?
如果integer是非数组数据类型,我会使用:

validates :ratings, numericality: { only_integer: true, greater_than: 0 }

如果ratings是数组数据类型,此验证是否也正确?
我感兴趣的是验证数组元素而不是数组本身。

1 个答案:

答案 0 :(得分:1)

AFAIK没有针对此类情况的内置验证。

您可以编写自定义的:

validate :valid_ratings

private

def valid_ratings
  if everything_is_ok
    true
  else
    errors.add(:ratings, 'ratings is invalid') if something_is_wrong
  end
end