Eu tenho um aplicativo onde cada cliente tem seus próprios estilos personalizados (cores e imagens de cabeçalho principalmente). Portanto, cada cliente possui alguns trechos de scss salvos no banco de dados. Em vez de deixar a formatação inadequada travar o pré-compilador, eu valido seu formato apenas certificando-me de que o Sass pode compilá-lo.
Crie o validador:
<script src = ” https://gist.github.com/4113551.js?file=scss_format_validator.rb”> </script>
# app/validators/scss_format_validator.rb
class ScssFormatValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
begin
# Attempt to parse SCSS
Sass::Engine.new(value, syntax: :scss).render
rescue Exception => e
# Add error if parsing fails
object.errors.add(attribute, :invalid_scss, error: e.inspect)
end
end
end
Em seguida, basta adicionar a chamada de validação no modelo:
validates :style_text, scss_format: true
Veja a essência aqui .