2
我遇到了這個問題與工廠女孩,它給了我一個undefined method 'each' for #<String:0x0000012915bc18>
錯誤與來自工廠的序列化字段。工廠女孩與序列化字段
在ActiveRecord中,它運行每個沒有問題,因爲返回的對象是一個數組。
我的問題是:我應該如何格式化序列化的對象在我的工廠?活動記錄返回的方式?或者它實際存儲在數據庫中的方式? (即序列化或不?)rspec將保存和檢索該活動記錄做相同的序列化魔術?
這是我在做什麼的簡化版本:
Tvdb.rb--型號
class Tvdb < ActiveRecord::Base
set_table_name 'tvdb'
serialize :cache
def self.episodes(id)
cached = self.find_by_term('episodes_' + id.to_s)
return cached.cache unless cached.nil?
info = self.series_info(id)
request = info.episodes
Tvdb.create(:term=>'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([#<AnObject::Module:0x000001290a4568 @value="dsada"]>,#<AnObject::Module:0x0002321290a4568 @value="dsadsada"]>)
end
end
注:緩存值的語法可能在這裏無效,我試圖縮短什麼是一個很長的序列化對象。問題的關鍵是,它在我的模型,但不能在rspec的
,並在我的* series_spec.rb *調用此:
series.episodes.count.should_not == 0
給出了錯誤
undefined method 'each' for #<String:0x0000012915bc18>