Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

रेल:डेटाबेस में खाली स्ट्रिंग को NULL पर बाध्य करें

हां, इस समय कॉलबैक का उपयोग करना ही एकमात्र विकल्प है।

before_save :normalize_blank_values

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

आप कोड को कई मॉडलों में आसानी से शामिल करने के लिए एक मिक्सिन में बदल सकते हैं।

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

या आप इसे अपने सभी मॉडलों में रखने के लिए ActiveRecord::Base में परिभाषित कर सकते हैं।

अंत में, आप इसे ActiveRecord::Base में भी शामिल कर सकते हैं लेकिन आवश्यकता पड़ने पर इसे सक्षम कर सकते हैं।

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. SQL WHERE कंडीशन किसके बराबर नहीं है?

  2. 80 मिलियन रिकॉर्ड वाली तालिका और एक इंडेक्स जोड़ने में 18 घंटे (या हमेशा के लिए) से अधिक समय लगता है! अब क्या?

  3. MySQL में त्रिभुज का प्रकार

  4. फेडोरा 14 पर MySQL रिलेशनल डेटाबेस का उपयोग करें

  5. MySQL में अनुक्रमिक संख्या डालें