gpt4 book ai didi

sql - Rails - 一个模型上的两个外键都指向同一个模型

转载 作者:行者123 更新时间:2023-12-04 01:17:59 24 4
gpt4 key购买 nike

我对 ActiveRecord 关联很陌生。我正在草拟一个应用程序,用于跟踪一组用户之间谁欠彼此的钱。安 Expense模型和 User模型似乎是自然的选择,我只是不确定如何定义两者之间的关系。例如,我想跟踪每笔费用的债权人(“所有者”)和债务人,但这实际上只是返回给 User 的两个外键。此外,每个用户可以有多项费用(作为债权人和债务人)到目前为止我对协会的最佳猜测是这样的:

class Expense
# belongs_to or has_one here?
# Not sure about class => User syntax:
# need to alias to foreign keys that reference the same model
belongs_to :creditor, :class => User
belongs_to :debtor, :class => User

class User
# has_many expenses defines a creditor relationship (user owns expense)
# how to define debtor relationship? (belongs_to...?)
has_and_belongs_to_many :expenses

我已经阅读了关于关联的 Rails 指南,但我仍然对外键和连接表迷失了方向。非常感谢任何输入!

最佳答案

所以这绝对不是 has_and_belongs_to_many那是多对多关系。你只需要使用一对 has_many关系。我认为它最终应该是这样的:

编辑:哎呀,我捏造了一点,对不起,让我再试一次:

class Expense
# make sure expense table has 'creditor_id' and 'debtor_id' rows
belongs_to :creditor, :class_name => "User", :foreign_key => :creditor_id
belongs_to :debtor, :class_name => "User", :foreign_key => :debtor_id

class User
has_many :debts, :class_name => "Expense", :foreign_key => :debtor_id
has_many :credits, :class_name => "Expense", :foreign_key => :creditor_id

关于sql - Rails - 一个模型上的两个外键都指向同一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com