Mỗi lần tôi chạy thanh ghi rake db:migrate
quyết định thay đổi tệp schema.rb của mình. Trong một số trường hợp điều này là hoàn toàn hợp lý, tuy nhiên trong một số trường hợp khác có vẻ như nó đang làm nó không có lý do. Trường hợp tôi nhầm lẫn là khi tôi kéo một di chuyển mới và một phiên bản mới của schema.rb từ git, và sau đó chạy rake db:migrate
. Vì phiên bản mới của tệp schema.rb đi kèm với quá trình di chuyển này, tôi không nên cập nhật schema.rb. Tuy nhiên, đường ray vẫn thay đổi nó, mọi lúc. Khi điều này xảy ra tôi thấy những thay đổi vô cùng ngớ ngẩn như:đường ray thay đổi schema.rb không có lý do
add_index "my_table", ["column1", "column2"], :name => "index_on_some_columns"
để
add_index "my_table", ["column2", "column1"], :name => "index_on_some_columns"
Khi điều này xảy ra tôi chỉ cần chạy git checkout db/schema.rb
và tiếp tục cuộc sống của tôi, nhưng nó irkes tôi không có kết thúc. Có lý do tại sao nó làm điều này, và làm thế nào tôi có thể ngăn chặn nó làm điều này?
EDIT: Dưới đây là một đoạn trích từ một diff
@@ -165,12 +165,11 @@ ActiveRecord::Schema.define(:version => 20130206001907) do
t.column "updated_at", :datetime
- t.column "coordinates", :point, :srid => 4326
@@ -200,15 +199,16 @@ ActiveRecord::Schema.define(:version => 20130206001907) do
t.column "something", :boolean
+ t.column "coordinates", :point, :srid => 4326
+ t.column "random_string", :string
t.column "remote", :string
- t.column "random_string", :string
end
- add_index "my_table", ["id", "foreign_id"], :name => "index_active_my_table_on_foreign_and_id"
- add_index "my_table", ["id", "active"], :name => "index_my_table_on_active_and_id"
- add_index "my_table", ["id", "content_modified_at"], :name => "index_my_table_on_content_modified_at_and_id"
+ add_index "my_table", ["foreign_id", "id"], :name => "index_active_my_table_on_foreign_and_id"
+ add_index "my_table", ["active", "id"], :name => "index_my_table_on_active_and_id"
+ add_index "my_table", ["content_modified_at", "id"], :name => "index_my_table_on_content_modified_at_and_id"
Chỉ mục này được xác định như thế nào trong tệp di chuyển của bạn? – Novae
đăng sự khác biệt của bạn – cbrulak
Trong nhiều trường hợp di chuyển cho biết 'add_index: my_table, [" column2 "," column1 "]' nhưng schema.rb được cung cấp qua git có thứ tự ngược lại: 'add_index" my_table ", [" column1 ", "column2"] '. Nó có vẻ là nhất quán, nhưng bây giờ tôi tự hỏi làm thế nào thứ tự ngược lại của cột bao giờ thực hiện nó là cách vào mã. Điều này có thể là ngây thơ nhưng điều này có thể có một cái gì đó để làm với làm việc với cả hai linux/mac? – wesdotcool