我正在使用带有Rails的Mongoid 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不支持。
任何建议都非常感谢。
感谢。
答案 0 :(得分:2)
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
答案 1 :(得分:1)
你也可以使用validates_length_of,它应该可以工作。