ruby-on-rails - 将外键添加到 Rails 模型

标签 ruby-on-rails ruby ruby-on-rails-3 postgresql migration

我是 Rails 的新手,整晚都在尝试解决这个问题,但没有成功。

我创建了 3 个模型:usersbusinessesbusiness_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/

相关文章:

Ruby 按范围分组,数字数组?

ruby-on-rails - 在 Rails 中创建应用程序后添加外键

ruby-on-rails - Rails 4 Controller 操作,救援 block 未按预期工作?

ruby - pig 的拉丁文翻译

ruby-on-rails - 创建一个后 Controller 规范测试

ruby-on-rails - 如何将可安装引擎添加到 Rails 3.1 应用程序中?

ruby-on-rails - 如何将条形码阅读器添加到我的 Rails 3.2 应用程序

ruby-on-rails-3 - 在 Rails 3 Controller 中创建数组

ruby-on-rails - Gemfile 在 rails 中有什么用?

ruby-on-rails - Rails 优雅地处理超时 session ?