Есть ли способ сделать условие before_save условным?
Я пытаюсь сделать before_save в приложении rails условным, но, похоже, оно не работает.
before_save method_call_to_run if self.related_model.some_method_that_returns_t_or_f?
Если some_method_that_returns_t_or_f возвращает true, я хочу, чтобы он запустил метод, прежде чем он сохранит объект, иначе я просто хочу проигнорировать before_save.
2 ответа
Решение
Вы можете использовать: если
before_save do_something, :if => Proc.new {|model| model.some_boolean_attr_or_method }
или просто
before_save do_something, :if => some_condition
РЕДАКТИРОВАТЬ:
для быстрого ознакомления, есть отличное руководство по этому поводу:
В Rails 5 я успешно определил закрытый метод, который содержит логическую логику, а затем передал его как символ (эта последняя часть кажется требованием). Другими словами:
before_save do_something, if: :private_boolean_method?
Это тонкое различие, но кажется элегантным решением.