首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails用户通过用户拥有许多用户。

Rails用户通过用户拥有许多用户。
EN

Stack Overflow用户
提问于 2020-12-25 14:57:12
回答 1查看 155关注 0票数 0

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

基本模型结构:

代码语言:javascript
复制
class User<ApplicationRecord
    has_many :reports  
end

class Report<ApplicationRecord
    belongs_to :user
end

现在,用户可以提交新的报告,并从下拉列表中选择与其关联的用户,但我也希望在报表和提交报告的用户之间添加一个关联,这样我就可以查看用户所做的报告,并找到他们报告最多的用户。(即)我希望用户有很多关于他们的报告,有很多他们写的关于别人的报告)

我不知道如何做到这一点,因为我需要区分这有很多/属于关系与我上面的关系。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-25 16:30:03

我认为您需要类似于reporter association的东西,这可以通过从report表到user表的可选引用来实现:

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

代码语言:javascript
复制
belongs_to :reporter, class_name: :User, foreign_key: 'reported_by_id', optional: true

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

代码语言:javascript
复制
add_reference :reports, :reported_by, index: true

然后你就可以做这样的事情:

代码语言:javascript
复制
report.reporter = user1
report.save
or
user2 = report.reporter

然后获得特定user所做的user

代码语言:javascript
复制
Report.where(reported_by_id: user.id)

这可能有助于迁移。,您可以简单地运行rails g migration <name_of_your_migration>,这将生成一个具有该名称的文件,并在change function中添加上面的代码。

上面的例子是在rails 5.2上,您使用上面的修复方法说的是:除了这个关系之外,我和report一样与表users也有一个特殊的关系(如果数据库中已经有数据,那么您可以使这种关系成为可选的或者不是可选的,我认为您应该这样做-- optional)。我希望这能帮到你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65449164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档