PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

di chuyển rails:postgresql cho md5 của chuỗi ngẫu nhiên làm mặc định

Lưu ý :Bạn có thể muốn xem brcebn's trả lời nếu bạn đang sử dụng phiên bản Rails mới hơn.

Rails sẽ cố gắng giải thích điều này:

t.string :uniqueid, default: md5(random()::text)

dưới dạng mã Ruby và :default => md5(...) không có nghĩa trong Ruby. Nếu bạn trích dẫn nó, thì Rails sẽ nghĩ đó là một chuỗi và đặt giá trị mặc định cho uniqueid chuỗi 'md5(random()::text)' và điều đó sẽ không giúp ích được gì.

Nếu bạn muốn sử dụng lệnh gọi hàm trong mặc định cột, bạn có thể thực hiện alter table bằng tay:

connection.execute(%q{
    alter table your_table alter column uniqueid set default md5(random()::text)
})

Điều đó sẽ giúp bạn có được mặc định bạn muốn trong cơ sở dữ liệu nhưng bạn có thể nhận thấy rằng không có đề cập đến mặc định mới trong schema.rb của bạn . Nếu bạn muốn một giản đồ có thể sử dụng được thì bạn sẽ phải sử dụng một lược đồ SQL thay thế bằng cách đặt nó vào application.rb :

config.active_record.schema_format = :sql

Sau đó, xóa schema.rb của bạn và sử dụng structure.sql thay vì. Lưu ý rằng kết xuất lược đồ SQL đã bị hỏng cho đến 3.2 và có sự cố tải lược đồ trong các phiên bản Rails khác nhau (nhưng bạn luôn có thể psql < structure.sql theo cách của bạn xung quanh điều đó). Mặt khác, kết xuất lược đồ SQL sẽ theo dõi những thứ ưa thích các khóa ngoại thực, kiểm tra các ràng buộc, trình kích hoạt, ...

BTW, nếu bạn thực sự muốn SHA thì bạn sẽ muốn xem digest hàm từ pgcrypto .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều kết nối cơ sở dữ liệu trong Rails

  2. Làm cách nào để tạo một cột trong postgres từ các giá trị và lựa chọn dựa trên các cột khác?

  3. Tìm và tính tổng các phạm vi ngày có bản ghi chồng chéo trong postgresql

  4. Cài đặt chính xác của pool kết nối cơ sở dữ liệu database.yml cho các ứng dụng Rails đơn luồng

  5. Cài đặt PostgreSQL trên Ubuntu cho Ruby on Rails