PostgreSQL将其他数据类型添加到Active Record默认值。
请参阅Stackoverflow上的PostgreSQL documentation,List 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
是数组数据类型,此验证是否也正确?
我感兴趣的是验证数组元素而不是数组本身。
答案 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