【问题标题】:Mongoid: Limiting number of embedded objectsMongoid:限制嵌入对象的数量
【发布时间】:2011-05-04 21:14:49
【问题描述】:

我在 Rails 3 中使用 Mongoid。限制每个父对象(相册)中可以存储的嵌入对象(照片)数量的最佳方法是什么?

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 支持。

非常感谢任何建议。

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongoid


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      您也可以使用 validates_length_of,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-10
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 2013-04-29
        相关资源
        最近更新 更多