नोट :आप शायद brcebn's देखना चाहते हैं उत्तर दें यदि आप रेल के नवीनतम संस्करण का उपयोग कर रहे हैं।
रेल इसकी व्याख्या करने की कोशिश करेंगे:
t.string :uniqueid, default: md5(random()::text)
रूबी कोड और :डिफ़ॉल्ट => md5(...)
. के रूप में रूबी में कुछ भी मतलब नहीं है। यदि आप इसे उद्धृत करते हैं, तो रेल सोचेंगे कि यह एक स्ट्रिंग है और uniqueid
के लिए डिफ़ॉल्ट मान बनाएं स्ट्रिंग 'md5(random()::text)'
और वह मदद नहीं करेगा।
यदि आप कॉलम डिफ़ॉल्ट में फ़ंक्शन कॉल का उपयोग करना चाहते हैं, तो आप तालिका बदलें
हाथ से:
connection.execute(%q{
alter table your_table alter column uniqueid set default md5(random()::text)
})
इससे आपको वह डिफ़ॉल्ट मिलेगा जो आप डेटाबेस में चाहते हैं लेकिन आप देख सकते हैं कि आपके schema.rb
में नए डिफ़ॉल्ट का कोई उल्लेख नहीं है। . यदि आप एक प्रयोग करने योग्य स्कीमा चाहते हैं तो आपको इसे अपने SQL स्कीमा का उपयोग करना होगा। कोड>application.rb
:
config.active_record.schema_format = :sql
फिर अपना schema.rb
delete हटाएं और struct.sql
. का उपयोग करें बजाय। ध्यान दें कि SQL स्कीमा डंप 3.2 तक टूट गए थे और विभिन्न रेल संस्करणों में स्कीमा लोडिंग समस्याएं हैं (लेकिन आप हमेशा psql
BTW, यदि आप वास्तव में SHA चाहते हैं तो आप <को देखना चाहेंगे। कोड>पाचन pgcrypto
. से कार्य करता है
।