Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Rails:Buộc chuỗi rỗng thành NULL trong cơ sở dữ liệu

Có, lựa chọn duy nhất vào lúc này là sử dụng một cuộc gọi lại.

before_save :normalize_blank_values

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

Bạn có thể chuyển đổi mã thành một mixin để dễ dàng đưa nó vào một số mô hình.

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

Hoặc bạn có thể xác định nó trong ActiveRecord ::Base để có nó trong tất cả các mô hình của bạn.

Cuối cùng, bạn cũng có thể đưa nó vào ActiveRecord ::Base nhưng hãy bật nó khi cần thiết.

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. loại bỏ các trường trùng lặp trong các hàng kết quả php-mysql

  2. MySQL:Dữ liệu GIS không hợp lệ được cung cấp cho hàm st_geometryfromtext

  3. Tôi có thể khôi phục một bảng từ tệp mysql mysqldump đầy đủ không?

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

  5. Đồng bộ hóa tất cả Vai trò Người dùng giữa hai Bản cài đặt Wordpress chia sẻ cùng bảng wp_users và wp_usermeta.