2015-11-25 9 views
5

Một trong các trường của chúng tôi cần phân biệt chữ hoa chữ thường. Chúng tôi có thể viết di chuyển để thay đổi đối chiếu hoạt động tốt nhưng thay đổi này không được phản ánh trong schema.rb. Nó sẽ tạo ra các vấn đề ví dụ khi chạy thử nghiệm và cơ sở dữ liệu thử nghiệm nhân bản sẽ không có collation chúng ta muốn cho trường đó.Làm thế nào để bạn tạo ra rake db: schema: dump có bộ ký tự và collation của các trường trong schema.rb?

Chúng tôi sử dụng mysql.

tôi đã tìm kiếm một cách để thực hiện điều này không có kết quả ..

tôi quản lý để tìm thấy điều này trên github nhưng không chắc chắn cách này đã được thực hiện https://github.com/cantino/huginn/blob/db792cdd82eb782e98d934995964809d9e8cb77d/db/schema.rb

+0

Bạn đã thử sử dụng structure.sql thay vì schema.rb chưa? http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you thay đổi: 'config.active_record.schema_format =: sql' trong application.rb và sau đó bạn cần sử dụng' rake db: structure: load 'thay vì' db: schema: load' - không chắc liệu nó sẽ duy trì sự đối chiếu của bạn hay không – house9

Trả lời

3

Tôi nghĩ rằng không có "chính thức" cách (được cung cấp bởi Rails hoặc đá quý ActiveRecord) để thực hiện loại kết xuất đó. Theo sau lịch sử git, trên bản thân repo Huginn, bạn có thể tìm thấy mã bạn cần để đạt được kết xuất này. Hãy xem để thực hiện điều này: https://github.com/cantino/huginn/commit/db792cdd82eb782e98d934995964809d9e8cb77d

Mã phù hợp nhất hiện nay đang ở đây: https://github.com/cantino/huginn/blob/master/lib/ar_mysql_column_charset/main.rb

Vì vậy, nếu bạn cần tính năng này, có thể bạn sẽ cần phải sao chép/dán phần mở rộng này vào dự án của bạn.

CẬP NHẬT

tôi đã thực hiện một đánh giá sâu sắc hơn về Huginn repo (lịch sử git và các vấn đề), và như bạn có thể đọc trong comment này, chức năng này đã được chiết xuất thành một viên ngọc: https://github.com/kamipo/activerecord-mysql-awesome.

1

Như đã đề cập trong nhận xét của @ house9, bạn có thể sử dụng cấu trúc.sql thay thế. Thêm ứng dụng này vào ứng dụng của bạn.rb:

config.active_record.schema_format = :sql 

Sau đó chạy bundle exec rake db:structure:dump để tạo cấu trúc SQL thực tế. Điều này giữ lại bộ ký tự và collations (mà lý tưởng nhất nên có trong schema.rb, nhưng than ôi).

"cấu trúc" là tự nhiên ít di động hơn "lược đồ", nhưng thường là điều tốt cho tất cả các thành viên trong nhóm và môi trường sử dụng cùng cơ sở dữ liệu và phiên bản.

Các vấn đề liên quan