4

問題

さて、私が抱えている問題は、アクティブなレコードの代わりにmongoを使用する私のQuizに埋め込まれた割り当てを作成するFactoryGirlにあります。アクティブなレコード モデルで動作する build_list を使用してみましたが、mongoid でこれを行うと問題が発生します...

以下を呼び出して、quiz_assignments を取得できます。

@quiznos.quiz_assignments.new(due_at: Time.now+ 1.day, published_at: Time.now)

しかし、私が電話した場合

@quiznos = FactoryGirl.build(:quizWassignments)

@quiznos にはクイズが作成されますが、 @quiz.quiz_assignments == []

私は以下を実行して過去を経験することさえできます

@quiz = FactoryGirl.build(:quiz)
@quiznos = FactoryGirl.build(:quiz_assignment, quiz: @quiz)
@quiz.quiz_assignments.should == [@quiznos]

質問

これを :quizWassignments で動作させる方法はありますか?

コード

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
4

1 に答える 1

6

Active RecordからMongoidに最初に切り替えたとき、FactoryGirlを上手にプレイするのに多くの問題がありました。結局、MongoidをすぐにサポートするFabricationに切り替えることになりました。

于 2012-05-03T03:37:44.263 に答える