Rails 用户通过用户拥有多个用户

Rails user has many users through users

我是 rails 的新手,正在开发一款基本上允许用户报告对其他用户的不满的应用程序(我想与朋友一起使用的一个有趣的应用程序)。基本上只有两个模型,用户和报告。一个用户有很多报告,报告属于一个用户(即一个用户与提交的有关他们的报告相关联)

基本模型结构:

class User<ApplicationRecord
    has_many :reports  
end

class Report<ApplicationRecord
    belongs_to :user
end

现在,用户可以提交新报告,并且 select 从下拉列表中将其关联到哪个用户,但我还想在报告与提交报告的用户之间添加关联,以便我可以浏览用户所做的报告并找到他们报告最多的用户。 (即我希望用户有很多关于他们的报告,也有很多他们写的关于其他人的报告)

我不知道如何完成此操作,因为我需要将此 has_many/belongs 与上面的关系区分开来。有什么想法吗?

我认为你想要像 reporter association 这样的东西,这可以通过从 report table 到 user [=42= 的可选引用来实现]:

因此,在您的 report model 上添加以下行:

belongs_to :reporter, class_name: :User, foreign_key: 'reported_by_id', optional: true

然后生成一个migration并添加下面的代码:

add_reference :reports, :reported_by, index: true

然后你可以这样做:

report.reporter = user1
report.save
or
user2 = report.reporter

然后获取特定 user 制作的 reports

Report.where(reported_by_id: user.id)

This may help with the migration,你可以简单地 运行 rails g migration <name_of_your_migration>,这将生成一个具有该名称的文件,并在 change function.[=28= 中添加上面的代码]

上面的例子是在 rails 5.2 上的,你说的上面的修复是这样的:除了关系之外,我作为 report 与 table users,我还与特定用户有特殊关系(如果您的数据库中已有数据,您可以将该关系设置为可选或不设置,我认为您应该这样做 optional)。我希望这有帮助!