Предупреждение Rails 6: перезаписывает существующий метод .fetched_state - PullRequest
0 голосов
/ 05 апреля 2020

Rails 6.0.2.1 ruby 2.6.5p114 (версия 2019-10-01 67812) [x86_64-linux]

мой класс ArticleDir имеет 2 области действия:

scope :active, -> { where(active: true).where(expired_on: nil) }
scope :fetched_state, -> { where(state: ArticleDir::FETCHED.to_s) }

и функция:

def article_engine_counts(keyword_reln = Keyword.active_keywords)
      joins(:keywords, :article_engine)
      .where(Keyword.contains(keyword_reln))
      .where(self.table[:active].eq(true))
      .group(:state, ArticleEngine.table[:name]).count
end

При запуске функции в консоли rails я получаю:

irb (основной): 108: 0> ArticleDir.article_engine_counts (ключевое слово)

Создание области действия: активно. Перезаписывает существующий метод ArticleDir.active.

Создание области действия: fetched_state. Перезаписывает существующий метод ArticleDir.fetched_state.

(1,7 мс) SELECT COUNT (*) AS count_all, article_commons. state AS article_commons_state, sengines. name AS sengines_name FROM article_commons INNER JOIN directory_keywords ON directory_keywords . article_dir_id = article_commons. id INNER JOIN keywords ON keywords. id = directory_keywords. keyword_id INNER JOIN sengines ON sengines. id = article_commons . sengine_id И sengines. type = 'ArticleEngine' ГДЕ article_commons. type = 'ArticleDir' И keywords. id IN (1217) И article_commons. active = ИСТИНА GROUP BY article_commons. state, sengines. name

=> {["expired", "data ..."] => 1, ["fetched", "data. .. "] => 83, [" sourced "," data ... "] => 81}

Я видел еще одну ссылку на эту проблему: https://github.com/rails/rails/issues/31234 , где было предложено, чтобы сообщение касалось перезаписи метода Ядра.

Я проверил Ядро, и во-первых, в Ядре нет таких методов для перезаписи:

irb(main):002:0> Kernel.methods.grep(/active/)
=> []
irb(main):004:0> Kernel.methods.grep(/fetched_state/)
=> []

Я предполагаю, что сообщение означает то, что, по-видимому, подразумевает - arel / rails каким-то образом перезаписывает эти две области действия модели.

Если так, то почему? и что мне с этим делать?

...