简体   繁体   English

如何在Ruby on Rails 5中验证pg数组长度?

[英]How to validate pg array length in Ruby on Rails 5?

How can I validate how many tags my Note model has? 如何验证我的Note模型有多少个标签? My model currently: 我的模特目前:

# == Schema Information
#
# Table name: notes
#
#  id              :integer          not null, primary key
#  title           :text
#  body            :text
#  organization_id :integer
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#  tags            :string           default([]), is an Array
#

# Note represents a saved Note that belongs to an organization.
class Note < ApplicationRecord
  belongs_to :organization
  validates :title, :body, presence: true
end

tags is a pg array in the database. tags是数据库中的pg数组。

Rails will handle conversion internally so you only need to worry about working with a Ruby array object. Rails将在内部处理转换,因此您只需要担心使用Ruby数组对象。

Validation looks like this: 验证看起来像这样:

class Note < ApplicationRecord
  validates :tags, length: {
    maximum: 10,
    message: 'A note can only have a maximum of 10 tags'
  }
end

it 'is invalid with more than 10 tags' do
  tags = %w(1 2 3 4 5 6 7 8 9 10 11)
  note = build(:note, tags: tags)
  note.valid?
  expect(note.errors[:tags])
    .to include('A note can only have a maximum of 10 tags')
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM