माइग्रेशन केवल तभी चलाया जाता है जब आप डेटाबेस बनाते हैं या डेटाबेस की संरचना में परिवर्तन करते हैं, न कि नया रिकॉर्ड सहेजते समय। मिखाइल before_save
. का सुझाव देने में सही है वापस कॉल करें। आप अपने मॉडल में ऐसा कुछ कर सकते हैं:
class Model < ActiveRecord::Base
before_save :set_empty_color_to_random_value
def set_empty_color_to_random_value
self.color = Color.order("RANDOM()").first.color if self.color.empty?
end
end
ध्यान दें कि RANDOM()
PostgreSQL और SQLite के लिए काम करता है, लेकिन MySQL के लिए नहीं। MySQL के लिए आपको RAND()
. का उपयोग करना होगा इसके बजाय।