Rspec 工厂女工;Mongoid嵌入和构建列表 问题

Rspec 工厂女工;Mongoid嵌入和构建列表 问题,rspec,mongoid,factory-bot,Rspec,Mongoid,Factory Bot,好的,我现在的问题是FactoryGirl在我的测验中构建嵌入式作业,它使用mongo而不是active record。我尝试使用一个构建列表,它可以与我的活动记录模型一起使用,但是我在使用mongoid时遇到了一个问题 我可以打电话给以下人员并获得测验作业: @quiznos.quiz_assignments.new(due_at: Time.now+ 1.day, published_at: Time.now) 但是如果我打电话 @quiznos = FactoryGirl.build(:

好的,我现在的问题是FactoryGirl在我的测验中构建嵌入式作业,它使用mongo而不是active record。我尝试使用一个构建列表,它可以与我的活动记录模型一起使用,但是我在使用mongoid时遇到了一个问题

我可以打电话给以下人员并获得测验作业:

@quiznos.quiz_assignments.new(due_at: Time.now+ 1.day, published_at: Time.now)
但是如果我打电话

@quiznos = FactoryGirl.build(:quizWassignments)
@quiznos将创建一个测验,但是@quick.quick\u作业==[]

我甚至可以运行下面的程序,并且已经过去了

@quiz = FactoryGirl.build(:quiz)
@quiznos = FactoryGirl.build(:quiz_assignment, quiz: @quiz)
@quiz.quiz_assignments.should == [@quiznos]
问题 有没有一种方法可以让这个工作:quizWassignments

代码
当我第一次从Active Record切换到Mongoid时,我很难让Factory Girl扮演好角色。最后,我切换到-支持Mongoid开箱即用。

我将尝试制作,谢谢提示。我似乎通过定义关联找到了解决办法,但无法像往常一样创建多个关联。我不得不做工厂:quizWassignments做测验作业{[factory.build(:quick_assignment)]}结束,但是在检查了制造文档之后,我已经安装了它,准备尝试它!看起来棒极了。曼恩!!!。。。有了制造商就容易多了。我现在唯一喜欢FG的是在工厂中定义工厂,而不是使用:from=>hook。但仅此而已!让我向您展示我发现的用于创建许多嵌入对象的代码的不同之处@theTRON,我使用多态关联将电子邮件嵌入到person对象中。我所做的与您在要点中所做的类似,但得到的是“BSON::InvalidDocument:无法将Mongoid::Relations::Embedded::Many类的对象序列化到BSON中。”。请看这里的代码。非常感谢您的帮助
class Quiz
  include Mongoid::Document
  include Mongoid::Timestamps
  field :user_id
  field :title
  field :description
  field :assignment_id
  field :due_at, :type => DateTime
  field :published_at, :type => DateTime
  embeds_many :quiz_assignments
end

class QuizAssignment
  include Mongoid::Document
  include Mongoid::Timestamps 
  field :due_at, :type => DateTime
  field :published_at, :type => DateTime
  embedded_in :quiz
  embeds_many :quiz_assignees
  validates_presence_of :due_at, :published_at
  validates_associated :quiz_assignees
end

FactoryGirl.define do
  factory :quiz do
    title { Factory.next(:name) }
    description { Factory.next(:description) }
    quiz_type "Practice"

    factory :quizWassignments do
      ignore do
        count 3
      end
      after_create do |quiz, evaluator|
        FactoryGirl.build_list(:quiz_assignment, evaluator.count, quiz: quiz)
      end
    end
  end

  factory :quiz_assignment do
    due_at Time.now + 1.day
    published_at Time.now
  end
end