Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Railsy:Wymuś pusty ciąg na NULL w bazie danych

Tak, jedyną opcją w tej chwili jest skorzystanie z oddzwaniania.

before_save :normalize_blank_values

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

Możesz przekonwertować kod na mixin, aby łatwo włączyć go do kilku modeli.

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

Możesz też zdefiniować go w ActiveRecord::Base, aby mieć go we wszystkich swoich modelach.

Na koniec możesz również uwzględnić go w ActiveRecord::Base, ale w razie potrzeby włączyć go.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najbardziej wydajny sposób wstawiania wierszy do bazy danych MySQL

  2. dodaj kolumnę do tabeli mysql, jeśli nie istnieje

  3. Jak oceniać partycje w MySQL?

  4. mysql tinyint(1) vs tinyint(2) vs tinyint(3) vs tinyint(4)

  5. Laravel 5 PDOException nie może znaleźć sterownika