【问题标题】:Ruby on Rails Migration with Primary and Foreign Key使用主键和外键进行 Ruby on Rails 迁移
【发布时间】:2013-11-06 19:15:06
【问题描述】:

我刚刚开始 ROR 并为 SQLite 数据库制作不同的表,并且在自动生成表和外键的 id 方面遇到了一些麻烦。为了创建我的表,我使用了“rails generate scaffold”命令,后面跟着我需要的属性。我去了 db/migrate 目录并查看了我刚刚定义的内容。但我不明白我应该如何明确引用外键。我习惯使用 Oracle,所以我通常会在创建过程的第一步中执行此过程,并且已经完成。

例如,我有一个 users 表,其中包含一些通用属性,例如用户名、密码等。我还有一个 orders 表,其中包含 transactionID(自动生成)、userID(我希望这是一个 FK)属性, PartNo(产品表中的 FK 键)。我不明白的是如何使用用户表中自动生成的键并将其作为外键包含在 Orders 表中。

另外,我在其他地方读到,如果我输入一行代码,例如

t.integer user_id

在我的 create_orders.rb 文件中,它会自动知道这是一个外键!?

我觉得这可能真的很容易,但我错过了一些东西。这是我第一次使用 Rails,我想我必须通过 SQL 直接定义外键。任何帮助将不胜感激。如果我能弄清楚这一点,它将为我节省很多时间。

【问题讨论】:

    标签: sql ruby-on-rails ruby database


    【解决方案1】:

    完成此操作后,在 Order 模型上,您将使用 belongs_to :user 生成关系并利用外键。

    如果您希望能够从 User 转到 Order,您可能是一对多的,因此您必须在 User 上执行 has_many :orders。

    Here is the documentation 用于 Rails 中的关联。而here is the specific documentation 对应于belongs_to 与has_one。

    【讨论】:

    • 好的,所以如果我去我的模型文件夹并添加 has_one :user 那么我想我也可以这样做并添加 has_one :product?
    • 其实我的回答是倒退的。我和 Rails 社区的很多人一样,仍然对has_one 和belongs_to 感到困惑。 :) 我也会更新Product 的答案。见guides.rubyonrails.org/…
    • 没问题。很抱歉造成 10 分钟的混乱。 :)
    猜你喜欢
    • 2023-04-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2015-11-27
    • 2011-02-13
    • 2012-04-11
    相关资源
    最近更新 更多