Как добавить обратный вызов before_validation к одному объекту, а не к целому классу в ActiveRecord 3? - PullRequest
0 голосов
/ 24 ноября 2010

Как добавить обратный вызов before_validation к одному объекту, а не к целому классу в ActiveRecord 3?
В AR 2 я сделал так:

module ObjExtend  
    def before_validation  
        p 'before_validation'  
        return super  
    end  
end  
obj.extend ObjExtend

, но он больше не работает

1 Ответ

1 голос
/ 24 ноября 2010

Это связано с тем, что в rails3 вы больше не можете просто определять методы в ваших моделях, названных для рассматриваемого обратного вызова.Вы должны объявить их с помощью before_validation :foo или что у вас есть (: foo ссылается на метод экземпляра класса модели, но вы также можете передать в proc или класс).

Итак. Это не 'Это идеальное решение, но оно должно дать вам несколько идей:

obj = MyModel.first
class << obj
  before_validation :foo
  def foo
    p 'before_validation'
    return super
  end
end

Этот код открывает «собственный класс» объекта (для этого есть разные названия) и ведет себя так, как если бы это был исходный контекст класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...