sql >> Databáze >  >> RDS >> Mysql

Rails:Vynutí prázdného řetězce na NULL v databázi

Ano, v tuto chvíli je jedinou možností použití zpětného volání.

before_save :normalize_blank_values

def normalize_blank_values
  attributes.each do |column, value|
    self[column].present? || self[column] = nil
  end
end

Kód můžete převést na mixin a snadno jej zahrnout do několika modelů.

module NormalizeBlankValues
  extend ActiveSupport::Concern

  included do
    before_save :normalize_blank_values
  end

  def normalize_blank_values
    attributes.each do |column, value|
      self[column].present? || self[column] = nil
    end
  end

end

class User
  include NormalizeBlankValues
end

Nebo jej můžete definovat v ActiveRecord::Base, abyste jej měli ve všech svých modelech.

Nakonec jej můžete také zahrnout do ActiveRecord::Base, ale v případě potřeby jej povolit.

module NormalizeBlankValues
  extend ActiveSupport::Concern

  def normalize_blank_values
    attributes.each do |column, value|
      self[column].present? || self[column] = nil
    end
  end

  module ClassMethods
    def normalize_blank_values
      before_save :normalize_blank_values
    end
  end

end

ActiveRecord::Base.send(:include, NormalizeBlankValues)

class User
end

class Post
  normalize_blank_values

  # ...
end


  1. MySQL COALESCE a funkce NULLIF

  2. Volání funkce Oracle z Java

  3. Co je AWS RDS

  4. Vrácení oprávnění tabulky z propojeného serveru v SQL Server (příklady T-SQL)