Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Rails:Paksa string kosong ke NULL di database

Ya, satu-satunya pilihan saat ini adalah menggunakan panggilan balik.

before_save :normalize_blank_values

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

Anda dapat mengonversi kode menjadi mixin agar mudah dimasukkan ke dalam beberapa 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

Atau Anda dapat mendefinisikannya di ActiveRecord::Base untuk memilikinya di semua model Anda.

Terakhir, Anda juga dapat memasukkannya ke dalam ActiveRecord::Base tetapi mengaktifkannya saat diperlukan.

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. Masalah Encoding Karakter dengan PHP Simple HTML DOM Parser

  2. MySQL UPDATE menambahkan data ke dalam kolom

  3. MySQL dan Periksa Batasan

  4. INET_ATON() dan INET_NTOA() di PHP?

  5. Pilih stempel waktu pertama dan terakhir di mana ID pengguna unik