2017-02-06 41 views
0

所以我一直在運行我的Capybara自動化測試時得到這個,我對軌道不熟悉......但是基於錯誤我假設它與「模型」有關。通過關聯錯誤模糊源代碼反射? (Rails)

以下是錯誤(對於某些名稱更改):

DEPRECATION WARNING: Ambiguous source reflection for through association. Please specify a :source directive on your declaration like: 

    class Stuff < ActiveRecord::Base 
    has_many :things, {:through=>:foo, :source=>"bar"} 

這裏是在模型文件有什麼存在的「東西」:

has_many :things, through: :foo 

究竟這是否意味着,我注意到在錯誤中顯示:source =>「bar」,目前模型中不存在。所以這就是說它並不是在哪裏:事情來自哪裏? Rails對我來說很新,所以我不明白它究竟是什麼意思?谷歌似乎並沒有很大的遺憾。

回答

1

此錯誤告訴您StuffThing之間的關係不明確,因爲您尚未定義StuffFoo之間的關係。這通常是這樣的:

class Student 
    has_many :scheduled_classes 
    has_many :teachers, through: :scheduled_classes 
end 

class ScheduledClass 
    belongs_to :student 
    belongs_to :teacher 
end 

class Teacher 
    has_many :scheduled_classes 
    has_many :students, through: :scheduled_classes 
end 

注意,through值在同一類的關係而得名。

+0

嗯,我注意到,在我的模型文件IM缺少「:源=‘酒吧’是不是與此有關,因爲多數民衆贊成錯誤是說 – msmith1114

+0

@ msmith1114的'source'是隱含的,通常,你只需要它?如果有實際的歧義,看起來就像你的情況一樣,你還沒有定義基礎關係 – coreyward

+0

也許我會誤解你定義的基礎關係的含義,實際上有一個has_many:foo defined在類Stuff文件中 – msmith1114