2017-01-02 26 views
0

如何驗證我的Note型號有多少個標籤?我的模型目前:如何驗證Ruby on Rails 5中的pg數組長度?

# == 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是數據庫中的pg數組。

回答

2

Rails將在內部處理轉換,因此您只需要擔心使用Ruby數組對象。

驗證看起來是這樣的:

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