Когда вы объявляете scope
, вы вызываете метод scope
для самого класса. Это делается, как вы сказали, во время загрузки, а не во время выполнения.
Это происходит каждый раз, когда вы вызываете метод класса в его объявлении. Некоторые примеры:
class Car < ActiveRecord::Base
acts_as_combustion_machine
belongs_to :driver
has_many :wheels
end
Это примеры методов, которые вызываются самому классу во время его объявления. Это означает, что любой из его параметров будет оцениваться во время загрузки, а не во время выполнения.
Давайте рассмотрим еще один пример. Если вы хотите указать engine
для acts_as_combustion_machine
, вы можете сделать что-то вроде:
acts_as_combustion_machine Engine.first
Примите во внимание, что это будет оцениваться во время загрузки класса (так же, как для даты).
Я думаю, это поможет вам прояснить причину этого немного подробнее ... но, пожалуйста, не стесняйтесь задавать другие вопросы. Мне потребовалось немного, чтобы понять это сам;)