我是 Rails 的新手,整晚都在尝试解决这个问题,但没有成功。
我创建了 3 个模型:users
、businesses
和 business_hours
。我还添加了关联(business_hours belongs_to businesses which belongs_to users
)和(user has_one business which has_many business_hours
)。
通过在线阅读文档,我现在似乎需要在我的数据库表中为这些关系创建外键。我如何使用 Rails ActiveRecord 迁移来做到这一点?我使用 PostgreSQL 作为我的数据库。
最佳答案
目前接受的答案并不准确,因为它没有添加数据库外键。它只是添加整数列。
在 Rails 4.2.x 中,当前的方法是:
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
创建迁移:
rails generate migration migration_name
对于现有列,在迁移中添加如下外键:
class MigrationName < ActiveRecord::Migration
def change
add_foreign_key :business_hours, :businesses
add_foreign_key :businesses, :users
end
end
对于 Rails 4.x 或者如果您要添加一个新列 并希望它成为一个外键,您可以这样做,您可能还想将索引指定为 true,但这不是外键要求的一部分:
http://edgeguides.rubyonrails.org/active_record_migrations.html#creating-a-migration
class MigrationName < ActiveRecord::Migration
def change
add_reference :business_hours, :business, index: true, foreign_key: true
add_reference :businesses, :user, index: true, foreign_key: true
end
end
关于ruby-on-rails - 将外键添加到 Rails 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257116/