Estou tentando remover automaticamente o valor atribuído do nome da coluna "table_number" se o usuário alterar o valor do nome da coluna "status" para "no" no formulário RSVP.
Estou tentando fazer isso no modelo do meu rsvp.rb com o seguinte código:
class Rsvp < ApplicationRecord
after_commit :remove_table_assignment, :if => :status_changed?
def remove_table_assignment
if self.status = "no"
self.table_number = nil
end
end
end
Isso não faz o que estou tentando fazer e nem gera erro.
self.status = "no"
é atribuição, então você está definindo o status para"no"
toda vez e isso sempre será avaliado como um valor "truthy". Como isso está em um,after_commit
a alteração não é persistida a menos que você salve novamente, então, em essência, o que você está fazendo é.Acho que o que você está procurando é:
Este evento será acionado antes que o registro seja salvo, de modo que a
table_number
atribuição persistirá, se a igualdade da String como condicional for avaliada comotrue
.