Как всегда использовать базовый класс и игнорировать STI в Rails?

У меня есть модуль, который я включаю в несколько моделей с таким содержанием:

self.class.find_by_foo(bar)

Все было хорошо, пока я не начал использовать STI. Эта строка всегда должна генерировать запрос

select * from table where foo=bar"

и не

select * from table where foo=bar AND type="Whatever"

Есть ли простой способ избежать этого?

Я подумал о двух решениях. Идем вверх по иерархии классов, пока не найду самый верхний класс перед ActiveRecord :: Base , или запустите запрос вручную, например:

self.class.find_by_sql("select * from #{self.class.table_name} where foo=bar")

Мне не нравится ни одно решение. Есть лучший вариант?

8
задан pupeno 11 February 2012 в 17:52
поделиться