【问题标题】:Making two associations to same model column in Rails在 Rails 中对同一模型列进行两个关联
【发布时间】:2014-12-05 18:50:11
【问题描述】:

我对 Rails 很陌生。我正在尝试在 Rails 中设置与另一个模型的关联。

我有一个包含列的用户模型:id、user_name、email

现在我正在尝试创建另一个与用户模型关联的模型费用。此模型的目的是创建费用并将费用与来自同一模型用户的两个不同用户相关联。与第二个用户的关联是在两个用户之间分配金额。

这是我在创建模型费用时打算做的:

$ rails generate model Expense amount:decimal user:references split_with:references

现在我如何将 split_with 关联到 User 模型,因为两个引用都关联到同一个 User 模型的两个用户的 id?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 rails-migrations


    【解决方案1】:

    您可以通过两种不同的方式引用同一模型:

    class Expense < ActiveRecord::Base
      belongs_to :user
      belongs_to :approving_user,
        class_name: 'User'
    end
    

    这需要存在 user_idapproving_user_id 列。您可以随时调整生成的迁移和模型代码以匹配此。

    一如既往地确保在这些列上设置了index: true

    【讨论】:

    • user_id 是否与 Rails 生成的用户 id 或其他列完全一样?
    • 这里的expenses.user_id 按照惯例指的是users.id。默认键始终是关联表的id 列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多