Я задал вопрос ранее, который вызвал несколько хороших ответов.
Вот предыдущий вопрос
На основании некоторых советов, приведенных там, я попытался переместить следующую логику контроллера
if params[:concept][:consulted_legal] == 0 && params[:concept][:consulted_marketing] == 1
@concept.attributes = {:status => 'Awaiting Compliance Approval'}
elsif params[:concept][:consulted_marketing] == 0 && params[:concept][:consulted_legal] == 1
@concept.attributes = {:status => 'Awaiting Marketing Approval'}
elsif params[:concept][:consulted_marketing] == 0 && params[:concept][:consulted_legal] == 0
@concept.attributes = {:status => 'Awaiting Marketing & Legal Approval'}
else
@concept.attributes = {:status => 'Pending Approval'}
end
в модель, вот так:
def set_status
if status.blank?
if (consulted_legal == true) && (consulted_marketing == true)
status = "Pending Approval"
elsif (consulted_legal == true) && (consulted_marketing == false)
status = "Awaiting Marketing Approval"
elsif (consulted_legal == false) && (consulted_marketing == true)
status = "Awaiting Legal Approval"
elsif (consulted_legal == false) && (consulted_marketing == false)
status = "Awaiting Marketing & Legal Approval"
end
end
true # Needs to return true for the update to go through
end
Я звоню с обратного вызова before_save.
По умолчанию оба атрибута consulted_legal и consulted_marketing установлены в значение false, а не в null, поэтому я проверяю здесь == false или true вместо запроса
if consulted_legal?
например.
Однако эта логика, похоже, не работает. Если я осматриваю объект, статус не устанавливается ни на что, никогда. Кто-нибудь может определить, почему это может происходить? Я правильно понял, например, как неправильно поступают атрибуты в моделях?
ТИА