Mongoid: ограничение количества вложенных объектов - PullRequest
1 голос
/ 05 мая 2011

Я использую Mongoid с Rails 3. Как лучше всего ограничить количество вложенных объектов (фотографий), которые можно хранить в каждом родительском объекте (альбоме)?

class Album
  include Mongoid::Document
  embeds_many :photos
end

class Photo
  include Mongoid::Document
  embedded_in :album, :inverse_of => :photos
end

С ActiveRecord я бы сделал что-то вроде:

has_many :photos, :before_add => :enforce_photo_limit

private

def enforce_photo_limit
  raise "Too many photos" if self.photos.count >= 50
end

... но это не поддерживается Mongoid.

Любые предложения приветствуются.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Mongoid включает ActiveModel :: Validations , поэтому вы должны иметь возможность использовать методы, содержащиеся в этом модуле:

class Album
  include Mongoid::Document
  embeds_many :photos

  validate :less_than_fifty_photos

  def less_than_fifty_photos
    errors.add(:base, "Too many photos") if self.photos.count >= 50
  end
end

Подробнее: http://mongoid.org/docs/validation.html

1 голос
/ 12 июля 2013

Вы также можете использовать validates_length_of, и он должен работать.

...