Как создать обратный вызов after_save во время выполнения - PullRequest
0 голосов
/ 10 мая 2010

Я использую ruby ​​на рельсах 2.3.5.

У меня есть пользовательский экземпляр. Во время выполнения в зависимости от определенных условий я хочу добавить обратный вызов after_save только для этого экземпляра.

Другая проблема заключается в том, что это after_save должно принимать блок или процесс в качестве параметра.

Я хочу что-то вроде этого. Это код псевдо.

пользователь = User.first

proc = Proc.new do ставит «это фу» конец

user.after_save proc

Ответы [ 2 ]

0 голосов
/ 22 января 2011
@user = User.first

eigen = class << @user; self; end
eigen.after_save do
  puts @user.email
end

@user.save
# prints user.email


@another = User.find(100)
@another.save
# does not print user.email
0 голосов
/ 11 мая 2010

Вот как бы я это сделал. В модели у меня было бы:

attr_accessor :after_save_callback

after_save { |record|
  record.after_save_callback.call unless record.after_save_callback.nil?
}

Принимая во внимание, что привязка события может быть чем-то вроде:

user = User.first
user.after_save_callback = Proc.new { "actual code" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...