有序列化的领域的工厂女孩

我和工厂女孩有这个问题,它给了我一个undefined method 'each' for #错误,来自工厂的序列化字段。

在ActiveRecord中,它运行每个没有问题,因为返回的对象是一个数组。

我的问题是:如何在工厂中格式化序列化对象? 活动记录返回的方式? 或者它实际存储在数据库中的方式? (即序列化或不序列?)rspec会在保存和检索该活动记录时执行相同的序列化魔术吗?

这是我正在做的简化版本:

Tvdb.rb–模型

 class Tvdb 'episodes_' + info.id.to_s, :cache=>request) return request end end 

然后在我的Series.rb模型中,我可以这样做:

 class Series < ActiveRecord::Base def episodes episodes = Tvdb.episodes(self.tvdb_id) episodes.each do |episode| puts episode.name end end end 

Tvdb.rb – 工厂

 FactoryGirl.define do factory :series1_episodes, :class=>Tvdb do term 'episodes_79488' cache %q([#,# ) end end 

注意:缓存值的语法在这里可能无效,我试图缩短一个非常长的序列化对象。 关键是它适用于我的模型,但不适用于rspec

并在我的* series_spec.rb *中调用此:

 series.episodes.count.should_not == 0 

给出了这个错误

 undefined method 'each' for # 

在工厂中,不应将cache设置为序列化值,而应设置为实际值。

 FactoryGirl.define do factory :series1_episodes, :class => Tvdb do term 'episodes_79488' cache ["foo", "bar"] end end