【问题标题】:How do you make a belongs_to required with mongo mapper?您如何使用 mongo 映射器制作所需的 belongs_to?
【发布时间】:2011-12-24 14:38:12
【问题描述】:

我正在使用Mongo Mapper,并试图弄清楚您如何制作所需的文件。例如,我想做这样的事情:

class Question
  include MongoMapper::Document

  many :answers
end

class Answer
  include MongoMapper::Document

  belongs_to :question, :required => true
end

但是当我这样做时,并不强制答案有问题:

> Answer.new.save
 => true

【问题讨论】:

    标签: ruby mongodb mongomapper


    【解决方案1】:

    MongoMapper 包含 ActiveModel::Validations,因此您可以像使用活动记录一样使用验证。以下应该有效:

    class Question
      include MongoMapper::Document
    
      many :answers
    end
    
    class Answer
      include MongoMapper::Document
    
      belongs_to :question
    
      validates :question, :presence => true
    end
    

    您可以在此处查看 rails 文档以获取有关这些验证的更多信息:http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates

    【讨论】:

      【解决方案2】:

      一些回调呢?

      class Answer
        include MongoMapper::Document
      
        belongs_to :question
      
        def before_save
          # if question is nil, return false (this cancels save)
          return false unless question
          true
        end
      end
      

      【讨论】:

      • MongoMapper 中真的没有内置东西来处理这个问题吗?
      • MongoMapper 支持类似 ActiveRecord 的回调。试试看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      相关资源
      最近更新 更多