Я хотел бы расширить существующий класс, используя instance_eval. Там исходное определение содержит проверку, которая требует наличия определенных полей, т.е.
class Dummy < ActiveRecord::Base
validates :field, :presence => true
end
Теперь я хочу изменить это на необязательный, используя instance_eval (или любой другой метод, действительно):
Dummy.instance_eval do
...
end
Каким будет правильный синтаксис для удаления проверки, поэтому поле является необязательным. Я предпочел бы сделать это непосредственно на уровне модели, вместо этого делаю странные хаки в контроллерах или представлениях. Использование instance_eval действительно не требуется, но, насколько я знаю, это, как правило, лучший способ повысить класс в Rails.
Изменить # 1
В целом - оригинальный класс является частью драгоценного камня, и я не хочу его разветвлять и не привязывать к определенному выпуску. Общая причина не очень важна. Простое редактирование исходной модели имеет гораздо худшие последствия, чем исправление обезьян.