非常によく似た質問が以前に尋ねられたことを知っています。より多くのスコープを連鎖させたい場合、その質問に対するハックな解決策は機能しません。そのため、ここでもう一度質問し、問題の原因についてもう少し情報を提供します。
# 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}
そのため、かなり劣っていますが、その構文をそのまま使用できると思います。この質問を特に緊急ではないようにします。しかし、なぜこれが起こるのか、私は間違いなく興味があります。何かご意見は?