我试图在Rails应用程序上创建一个推荐程序,我在处理关系时遇到了困难。
我的推荐模式非常简单:godfather_id
,godson_id
,state
教父和教子ID都引用一个用户,该用户可以有多个教子,但只能有一个教父。
class Referral < ApplicationRecord
belongs_to :user
belongs_to :godson, class_name: 'User'
end
这个问题出现在我的用户模型中。我不希望能够执行user.godsons
来获得 * godsons * 用户的数组,也不希望能够执行user.godfather
来获得 * godfather * 用户。
我尝试了一些事情,我认为这两个地方最接近我需要做的事情(用户模型简化为示例)。
x一个一个一个一个x一个一个二个x
我真的不知道如何实现这一关系,任何帮助将不胜感激🙏
1条答案
按热度按时间polhcujo1#
要进行实际的自引用关联,只需在users表中添加一列,该列指向同一个表:
如果你必须将Referalls存储为一个单独的表,你的思路是对的,但是你把外键弄反了:
需要注意的是,
has_one
并不保证一个用户只能有一个推荐(因此只有一个教父),它只是给查询添加了一个LIMIT 1,您必须通过唯一性约束和验证来强制执行。