ruby-on-rails - create - rails guide relations
¿Hay alguna manera de hacer condicional a before_save? (2)
En Rails 5 he tenido éxito al definir un método privado que contiene la lógica booleana y luego pasarlo como un símbolo (la última parte parece ser un requisito). En otras palabras:
before_save do_something, if: :private_boolean_method?
Es una diferencia sutil pero parece una solución elegante.
Estoy tratando de hacer condicional a before_save en una aplicación de Rails, pero no parece estar funcionando.
before_save method_call_to_run if self.related_model.some_method_that_returns_t_or_f?
Si ''some_method_that_returns_t_or_f'' devuelve true, quiero que ejecute el método antes de que guarde el objeto; de lo contrario, solo quiero que ignore el before_save.
puedes usar: si
before_save do_something, :if => Proc.new {|model| model.some_boolean_attr_or_method }
o simplemente
before_save do_something, :if => some_condition
EDITAR:
Para una referencia rápida, hay una excelente guía sobre esto:
http://guides.rubyonrails.org/active_record_callbacks.html#conditional-callbacks