我正在尝试测试具有隐式has_many关联的模型,并且遇到一些困难。隐含has_many关联的工厂女孩
我有一个表A,列B_ID,其中B基本上是一个外键 - 除了我的数据库中没有表B,或与对象B关联的活动记录类。还有表C具有列投标。
在模型表C中有:
# implicit has_many :alphas
def alphas
Alpha.where(:b_id => b_id).order(:xyz)
end
这个数据库结构是有道理的,因为我有数据,和非测试代码工作正常。
我的测试代码几乎可行,我希望我只是缺少一些简单的东西。
我有A和C所定义的工厂,以及我有一个测试:
a1 = Factory(:alpha, :b_id => 123, :xyz => 100)
a2 = Factory(:alpha, :b_id => 123, :xyz => 200)
c1 = Factory(:c, :b_id => 123)
puts c1.alphas.count
puts c1.alphas.first
c1.alphas.first.should == a1
的输出是:
2
nil
<test fails>
改变共享B_ID结果在A的对象的数量c1.alphas.count发生了变化,但我似乎无法真正在隐式关联中获得一个A对象 - 而是总是得到零。在我的C模型中还有其他的方法,我无法测试,因为这些方法需要访问单个A对象上的字段。
有没有人对这里幕后的事情有所了解,或者我可以做些什么来解决这个问题?谢谢。
您能得到什么,如果你把'c1.alphas.class.name'? – 2012-02-01 20:44:13
@BenLee,ActiveRecord :: Relation – jtabak 2012-02-01 21:12:06
出于好奇,'放置c1.alphas.to_a [0]'显示记录?那么'放置c1.alphas.limit(1).to_a [0]'?我只是好奇,如果破损在后台自动加载以某种方式失败。 – 2012-02-01 21:33:38