В случае, если кому-то интересно, я перечитал документацию по этому вопросу, и то, что я подумал, было объяснением того, как код работал под прикрытием, оказалось требованием, в котором говорилось, что мне нужно переопределить метод добавлял обратные вызовы к:
def initialize(attributes = {}, persisted = false)
run_callbacks :initialize do
super(attributes, persisted)
end
end
Это кажется мне невероятно нелогичным, так как ожидает, что вы отследите сигнатуру существующего метода, перезапишите его и добавите функцию обратного вызова. Я надеюсь, что я что-то здесь упускаю и просто делаю ошибку, но у меня нет другого решения для работы.
В любом случае, вот патч обезьяны для обеспечения этого обратного вызова для всех классов AR:
module ActiveResource
class Base
extend ActiveModel::Callbacks
define_model_callbacks :initialize, :only => :after
def initialize_with_callback(attributes = {}, persisted = false)
run_callbacks :initialize do
initialize_without_callback(attributes, persisted)
end
end
alias_method_chain :initialize, :callback
end
end