アイテムとタグの2つのモデルがあります
class Item
include Mongoid::Document
field :title, type: String
has_many :tags
validates_length_of :tags, minimum: 1
end
class Tag
include Mongoid::Document
field :title, type: String
belongs_to :item
end
アイテムには少なくとも 1 つのタグが必要です。アイテムが作成されると、検証は非常にうまく機能します。
item = Item.create(title: "black hole")
item.tags << Tag.create(title: "black")
item.tags << Tag.create(title: "heavy")
puts item.valid? # => true
item.save
ただし、既存のアイテムが変更されると、検証は失敗します。
item = Item.find(item.id)
item.title = "nothing"
puts item.tags.count # => 2, it's ok
puts item.valid? # => false, it's wrong
関連ドキュメントの数を適切に検証する方法は?