有序列化的领域的工厂女孩
我和工厂女孩有这个问题,它给了我一个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