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
)。我希望这有帮助!
我是 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
)。我希望这有帮助!