Я недавно обновился с Rails 4.1.4 до 4.2.8, и у меня очень странное поведение.Таким образом, у нас есть таблица class Identity < ActiveRecord::Base
и таблицы Doctor, Assistant, Substitute
, которые унаследованы от нее.
Так что, когда я за пределами любого из этих классов и делаю call (rails console, specs)
Doctor.all.to_sql
=> "SELECT \"identities\".* FROM \"identities\" WHERE \"identities\".\"type\" IN ('Doctor')"
, что хорошо.
Когда я делаю тот же вызов, но из метода класса в модели Assistant, он выдает следующее Doctor.all.to_sql
=>
"SELECT \"identities\".* FROM \"identities\" WHERE \"identities\".\"type\" IN ('Assistant', 'Substitute')"
, что неверно.
Пока я нахожусь внутри метода класса в модели Assistant и выполняю
Doctor.unscoped.all
=> "SELECT \"identities\".* FROM \"identities\" WHERE \"identities\".\"type\" IN ('Doctor')"
хороший запрос.
Я проверил, установим ли мы где-нибудь default_scopeно мы неКроме того, это довольно сложно, так как когда я делаю SomeTable.joins(:identities)
, я не могу отсканировать identities
, что приводит меня к неправильному запросу.
Итак, я не совсем уверен, что произошло после обновления, но я знаю, что это работает со старыми Rails 4.1.4.
Любой намек будет полезен.
Regads