Я знаю, очень, очень похожий вопрос задавался ранее. Хакерское решение этого вопроса не сработает, если я захочу пообщаться в большем количестве областей, поэтому я снова спрашиваю здесь, с немного большей информацией о том, откуда возникла проблема.
# 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'
Похоже, это означает, что указанный мной атрибут публикации_идентификатора не существует. Тем не менее, это так.
Article.search :with => {:publication_id => 1}
Итак, я полагаю, что могу просто использовать этот синтаксис, хотя он значительно менее симпатичен. Делать этот вопрос не особенно актуальным. Но мне определенно любопытно, почему это происходит. Есть мысли?