我正在嘗試測試具有隱式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