हां, इस समय कॉलबैक का उपयोग करना ही एकमात्र विकल्प है।
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