Ich benutze Thinking Sphinx 2.0.13 mit Rails 3.2.9."Undefinierte Methode" mit Sphinx-Spektiven bei Verwendung von STI erhalten
I haben und STI-Klasse, die wie folgt aussieht:
class User < ActiveRecord::Base
define_index do
has :account_id
has :is_deleted
end
sphinx_scope(:by_account) do |account_id|
{:with => {:account_id => account_id}}
end
sphinx_scope(:without_deleted) do
{:with => {:is_deleted => false}}
end
end
class Admin < User
end
Wenn ich entweder auf dem Benutzer oder Admin-Klasse einen einzelnen Bereich zu verwenden versuchen, alles ist in Ordnung. Ich kann auch Bereiche miteinander verketten, indem Sie das Benutzermodell wie erwartet verwenden. Das Problem ist, wenn ich Bereiche auf der Admin Modellkette, die ich erhalte:
> Admin.by_account(1).without_deleted
NoMethodError: Sphinx Query (2.9ms)
Sphinx Found 3 results
Admin Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`type` IN ('Admin') AND `users`.`id` IN (7, 8, 9)
undefined method `without_deleted' for #<ThinkingSphinx::Search:0x007fd3d95f7a08>
Es erscheint, sobald die Abfrage ausgeführt werden, da der erste Umfang auftritt. Gibt es etwas Offensichtliches, das ich vermisse, oder sieht das bei TS so aus?
Benutzerklasse hat ein DB-Feld namens is_deleted? mit booleschem Typ? – Lichtamberg
@Lichtamberg - ja, die Spalte ist da und ist boolesch. Entweder funktioniert der Bereich für sich selbst - nur wenn er angekettet ist, bricht er. – Codebeef
könnten Sie die Antwort anzeigen, wenn Sie Admin.by_account (1) in die Konsole eingeben? – Lichtamberg