我知道以前有人问过一个非常非常相似的问题。如果我想在更多范围内进行链接,则该问题的骇人听闻的解决方案不起作用,因此我在这里再次询问,并提供有关问题出处的更多信息。
# Relevant code only...
class Publication < ActiveRecord::Base
has_many :issues
has_many :articles, :through => :issues
end
class Issue < ActiveRecord::Base
belongs_to :publication
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :issue
define_index do
has issue(:publication_id), :as => :publication_id
end
end
因此,我希望以下代码能够工作:
Publication.first.articles.search 'foobar'
但是,它返回以下错误:
RuntimeError: Missing Attribute for Foreign Key publication_id
from /home/matchu/rails/torch/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/active_record/has_many_association.rb:18:in `search'
这似乎暗示我专门设置的publication_id属性不存在。但是,确实如此。
Article.search :with => {:publication_id => 1}
所以,我想我可以只使用那种语法,即使它明显不那么漂亮。使这个问题不是特别紧迫。但我绝对很好奇为什么会发生这种情况。有什么想法吗?