我在同一个 Rails 项目上使用 SQLite3 和 MySQL,但在两台不同的计算机上。我注意到,schema.rb
当我运行所有迁移时生成的 which 在两种环境中看起来都不同。当我在 SQLite3 环境中运行迁移时,会从文件中删除以下语句。schema.rb
add_index "places", ["user_id"], :name => "places_user_id_fk"
add_foreign_key "places", "users", :name => "places_user_id_fk"
请注意,我使用了通过和扩展迁移的外国人 gem。add_foreign_key
remove_foreign_key
以下是与问题相关的迁移和模型:
# 20130123004056_create_places.rb
class CreatePlaces < ActiveRecord::Migration
def change
create_table :places do |t|
t.string :name
t.string :location
t.integer :user_id
t.timestamps
end
end
end
...
# 20130123234250_add_foreign_key.rb
class AddForeignKey < ActiveRecord::Migration
def change
add_foreign_key(:places, :users)
end
end
...
# user.rb
class User < ActiveRecord::Base
has_many :places
end
...
# place.rb
class Place < ActiveRecord::Base
belongs_to :user
end
问题:如何定义 SQLite3 和 MySQL 都可以处理的users
关系places
?