多態的なアプローチを使用して、人のMongoidオブジェクト内にメールを埋め込もうとしています。「BSON::InvalidDocument:クラスMongoid :: Relationships :: Embedded::ManyのオブジェクトをBSONにシリアル化できません。」の取得 テストを実行するときはいつでも。以下のコードを参照してください。どれでも大歓迎です。FactoryGirlで人の内部にメールを作成する正しい方法がわかりません。ありがとう。
class Email
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :mailable, polymorphic: true
field :email, type: String
field :category, type: String
end
class Person
include Mongoid::Document
embeds_many :emails, as: :mailable #polymorhpic
index "emails.email", unique: true
field :first_name, type: String
field :middle_name, type: String
field :last_name, type: String
validates_uniqueness_of :emails
end
FactoryGirl.define do
sequence(:fn) {|n| "first_name#{n}" }
sequence(:ln) {|n| "last_name#{n}" }
factory :person do
first_name { generate(:fn) }
last_name { generate(:ln) }
gender 'M'
nationality 'USA'
ssn '123-88-1111'
factory :emails_ do
emails { Factory.build(:email) }
end
end
end
FactoryGirl.define do
sequence(:address) {|n| "user#{n}@mail.com" }
factory :email do
email { generate(:address) }
category 'personal'
end
end