आप माइग्रेशन में डिफ़ॉल्ट बदल सकते हैं:
change_column :my_objects, :id, :integer, default: -> { "nextval('global_seq')" }
आप :bigint . का उपयोग करना चाह सकते हैं :integer . के बजाय आपके अनुक्रम और तालिकाओं को कैसे सेट किया जाता है, इस पर निर्भर करता है। आपको :default . के लिए लैम्ब्डा का उपयोग करना होगा कच्चे nextval('global_seq') . प्राप्त करने का विकल्प डेटाबेस में अभिव्यक्ति।
आप पुराने अनुक्रम को भी छोड़ना चाहेंगे, AFAIK आपको connection.execute('drop sequence ...') का उपयोग करना होगा उसके लिए।
यदि आप डिफ़ॉल्ट :id . को छोड़ रहे हैं अपने create_table . में कदम रखें तब आप यह सब तब कर सकते हैं जब आप मैन्युअल रूप से :id . बनाते हैं कॉलम:
create_table :my_objects, id: false do |t|
t.bigint :id, null: false, default: -> { "nextval('global_seq')" }
t.primary_key :id
...
end
फिर से, t.bigint . के बीच चुनाव और t.integer निर्भर करता है कि आप अपने पीके को कितना बड़ा बनाना चाहते हैं।